[cfe-dev] ObjC++ and MyObjCClass.class syntax
Jean-Daniel Dupas
devlists at shadowlab.org
Wed Aug 11 11:48:33 PDT 2010
Le 11 août 2010 à 20:38, Douglas Gregor a écrit :
>
> On Aug 11, 2010, at 11:11 AM, Jean-Daniel Dupas wrote:
>
>> You can't use class as a property name or as an ivar name in objc++
>>
>> This extension is just to be able to write for example:
>>
>> [obj isKindOfClass:NSString.class]
>>
>> instead of
>>
>> [obj isKindOfClass:[NSString class]]
>>
>>
>> As the +(Class)class method is defined on NSObject, this syntax may virtually be used by any ObjC class.
>>
>> I know this syntax is "abusing" the new property syntax as it uses it to call a standard accessor method (not defined as a property), but this kind of "abuse" is supported for all other accessors name and g++ support it for 'class', so it may be worth supporting it too.
>>
>> Here is a test case accepted by g++ but rejected by clang:
>> ---------------------------------
>> @interface I {
>> int cls;
>> }
>>
>> + (int)class;
>>
>> @end
>>
>> @implementation I
>> - (int) Meth { return I.class; }
>> @end
>> ---------------------------------
>
>
> We decided not to support this idiom in Clang++. It's too horrible for words, and [NSString class] is a suitable formulation that will work.
Thanks for the definite answer.
-- Jean-Daniel
More information about the cfe-dev
mailing list