<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Mar 23, 2015 at 11:54 AM, John Spicer <span dir="ltr"><<a href="mailto:jhs@edg.com" target="_blank">jhs@edg.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
On Mar 23, 2015, at 2:31 PM, "Nelson, Clark" <<a href="mailto:clark.nelson@intel.com">clark.nelson@intel.com</a>> wrote:<br>
<br>
>> We couldn't wok out whether SD-6 intends this to work:<br>
>><br>
>> #define D deprecated<br>
>> #if __has_cpp_attribute (D)<br>
>> #endif<br>
>><br>
>> Currently GCC performs macro-expansion but Clang doesn't.<br>
><br>
> Personally, I would say that our default should be that __has_cpp_attribute<br>
> isn't required to have special implications for macro expansion.<br>
><br>
> Of course anyone is free to make the case that it should, but I'd be<br>
> inclined to put the burden of proof on the proposer (or supporters).<br>
><br>
> We could make it implementation-defined, to leave clang an option for not<br>
> changing their implementation. But, like Richard, I don't feel strongly<br>
> about that one way or the other.<br>
><br>
<br>
</span>I don't have strong feelings about whether or not the expansion occurs.<br>
<br>
I do feel somewhat strongly that we should agree on the behavior and include that in our recommendations.<br>
<br>
I think it would be unfortunate if the feature test macros has subtle portability issues of their own.</blockquote><div><br></div><div>I agree.</div><div><br></div><div>Since we seem to collectively have no strong opinions: I think I very slightly prefer "expand" over "do not expand" on the basis that __has_cpp_attribute(X) and [[X]] should be interpreted the same way.</div></div></div></div>