<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On 7 July 2017 at 00:23, Katsuhiko Nishimra via cfe-dev <span dir="ltr"><<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Dear developers,<br>
<br>
As of r307243, clang++ seems to have the __is_aggregate() builtin<br>
macro, but __has_builtin(__is_aggregate) returns false.  This is<br>
rendering std::is_aggregate from libstdc++-7 unusable with clang++.<br></blockquote><div><br></div><div>__has_builtin detects builtin functions. __is_aggregate is not a builtin function -- it's not a function at all, since it takes a type, not a value. But if libstdc++7 is assuming that __has_builtin can be used to detect type trait keywords, perhaps we should make it so; it's not unreasonable to expect it to be usable for this purpose.</div><div><br></div><div>Would you be interested in providing a patch to Clang to implement this?</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I have tested the code below with clang-5.0=5.0~svn307243-1 package from<br>
<a href="http://apt.llvm.org" rel="noreferrer" target="_blank">apt.llvm.org</a> on a debian unstable box.<br>
<br>
#include <iostream><br>
<br>
int main(void){<br>
        std::cout << "__has_builtin(__is_aggregate) = " <<  __has_builtin(__is_aggregate) << std::endl;<br>
        std::cout << "__is_aggregate(int[42]) = " <<  __is_aggregate(int[42]) << std::endl;<br>
        std::cout << "__is_aggregate(std::string) = " <<  __is_aggregate(std::string) << std::endl;<br>
        return 0;<br>
}<br>
<br>
result:<br>
__has_builtin(__is_aggregate) = 0<br>
__is_aggregate(int[42]) = 1<br>
__is_aggregate(std::string) = 0<br>
<br>______________________________<wbr>_________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-dev</a><br>
<br></blockquote></div><br></div></div>