[SG10] Should the argument to __has_cpp_attribute be expanded by the preprocessor?

John Spicer jhs at edg.com
Mon Mar 23 19:54:02 CET 2015


On Mar 23, 2015, at 2:31 PM, "Nelson, Clark" <clark.nelson at intel.com> wrote:

>> We couldn't wok out whether SD-6 intends this to work:
>> 
>> #define D deprecated
>> #if __has_cpp_attribute (D)
>> #endif
>> 
>> Currently GCC performs macro-expansion but Clang doesn't.
> 
> Personally, I would say that our default should be that __has_cpp_attribute
> isn't required to have special implications for macro expansion.
> 
> Of course anyone is free to make the case that it should, but I'd be
> inclined to put the burden of proof on the proposer (or supporters).
> 
> We could make it implementation-defined, to leave clang an option for not
> changing their implementation. But, like Richard, I don't feel strongly
> about that one way or the other.
> 

I don't have strong feelings about whether or not the expansion occurs.

I do feel somewhat strongly that we should agree on the behavior and include that in our recommendations.

I think it would be unfortunate if the feature test macros has subtle portability issues of their own.

John.




More information about the Features mailing list