<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">&lt;<a href="mailto:jhs@edg.com" target="_blank">jhs@edg.com</a>&gt;</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, &quot;Nelson, Clark&quot; &lt;<a href="mailto:clark.nelson@intel.com">clark.nelson@intel.com</a>&gt; wrote:<br>
<br>
&gt;&gt; We couldn&#39;t wok out whether SD-6 intends this to work:<br>
&gt;&gt;<br>
&gt;&gt; #define D deprecated<br>
&gt;&gt; #if __has_cpp_attribute (D)<br>
&gt;&gt; #endif<br>
&gt;&gt;<br>
&gt;&gt; Currently GCC performs macro-expansion but Clang doesn&#39;t.<br>
&gt;<br>
&gt; Personally, I would say that our default should be that __has_cpp_attribute<br>
&gt; isn&#39;t required to have special implications for macro expansion.<br>
&gt;<br>
&gt; Of course anyone is free to make the case that it should, but I&#39;d be<br>
&gt; inclined to put the burden of proof on the proposer (or supporters).<br>
&gt;<br>
&gt; We could make it implementation-defined, to leave clang an option for not<br>
&gt; changing their implementation. But, like Richard, I don&#39;t feel strongly<br>
&gt; about that one way or the other.<br>
&gt;<br>
<br>
</span>I don&#39;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 &quot;expand&quot; over &quot;do not expand&quot; on the basis that __has_cpp_attribute(X) and [[X]] should be interpreted the same way.</div></div></div></div>