C++ Logo

sg10

Advanced search

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

From: John Spicer <jhs_at_[hidden]>
Date: Mon, 23 Mar 2015 14:54:02 -0400
On Mar 23, 2015, at 2:31 PM, "Nelson, Clark" <clark.nelson_at_[hidden]> 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.

Received on 2015-03-23 19:54:05