[ Date Prev][ Date Next][ Thread Prev][ Thread Next][ Date Index][ Thread Index]
Re: RTTI draft proposal
- To: Daveed Vandevoorde <daveed@xxxxxxx>
- Subject: Re: RTTI draft proposal
- From: Jason Merrill <jason@xxxxxxxxxx>
- Date: 26 Aug 1999 01:07:58 -0700
>>>>> Daveed Vandevoorde <daveed@xxxxxxx> writes:
>> > 6. std::__qualifier_type_info is similar to std::__pointer_type_info but
>> > describes top level qualifiers as in "int const" and "char *const".
>>
>> Where would this be used? I included it in the G++ implementation, but
>> have since come to the conclusion that it was a mistake.
> How do you check qualification conversions when catching exceptions?
Qualification conversions only apply to pointers, and you already record
the qualification of a pointer's target type in the info about the pointer
type.
>> In a typical downcast, the offset from src to dst will be negative.
> Is the architecture biased? I.e., do we care about the sign convention
> for this value?
Dunno; I just meant that you shouldn't have magic negative values for
src2dst_offset.
>> FWIW, g++ turns all dynamic_casts into upcasts, using the original pointer
>> for disambiguation. I'm not yet convinced that there's a good way to
>> accelerate downcasts.
> I'm afraid you may be right. Except perhaps that checking if a base
> of type T is at the offset guessed by the base-to-derived cast may
> be more efficient than a full-fledged complete-to-base conversion.
That makes sense. When we dynamic_cast from V* to T*, if we see that T has
a public nonvirtual base of type V, we pass the offset from a T to a V into
__dynamic_cast. In __dynamic_cast, we walk through the T bases, and if we
find one at the right position, we're done.
So I guess it does make sense to have magic negative values.
Jason
|