>>> From: Rick Mann <rm...@latencyzero.com>
>>> Subject: ARC and reinterpret_cast?
>>> Date: July 7, 2012 9:13:29 PM PDT
>>> To: Cocoa-Dev List <cocoa-dev@lists.apple.com>
>>> 
>>> Hi. I'd like to write code like this:
>>> 
>>>     MyObject* foo = reinterpret_cast<__bridge MyObject*> (someVoidPointer);
>>> 
>>> But the compiler doesn't like it. It's perfectly happy with:
>>> 
>>>     MyObject* foo = (__bridge MyObject) someVoidPointer;
>>> 
>>> this is in a .mm file.
>>> 
>>> The error is:
>>> 
>>> error: type name requires a specifier or qualifier
>>>       MyObject* me = reinterpret_cast<__bridge MyObject*> (inRefCon);
>>>                                       ^
>>> error: expected '>'
>>>       MyObject* me = reinterpret_cast<__bridge MyObject*> (inRefCon);
>>>                                       ^
>>>> 
>>> note: to match this '<'
>>>       MyObject* me = reinterpret_cast<__bridge MyObject*> (inRefCon);
>>>                                      ^
>>> Is it a bug in the compiler, or am I doing something wrong? 

Well, it's definitely an ugly error message;  that's worth a bug.

The answer is that reinterpret_cast is redundant with __bridge.  Bridging
casts are essentially a different kind of named cast:  they document intent
more precisely than the general cast syntax, and they impose their own
well-formedness rules about the operand and result type.  So you're not
getting any extra safety here.

This is documented in the ARC specification:
 
http://clang.llvm.org/docs/AutomaticReferenceCounting.html#objects.operands.casts
 3.2.4. Bridged casts
   A bridged cast is a C-style cast annotated with . . .

In theory there's nothing preventing us from allowing these keywords on
named casts (although it would only be appropriate on reinterpret_cast),
but our sense is that doing so would only confuse the issue more by
suggesting subtle differences when none apply.

John.
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to