<div dir="ltr">The fix is easy, if the traits are fully implemented?</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, May 2, 2014 at 12:48 AM, Marshall Clow <span dir="ltr"><<a href="mailto:mclow.lists@gmail.com" target="_blank">mclow.lists@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Recently, reading llvm/tools/clang/docs/LanguageExtensions.rst, I saw a list of type_trait primitives<br>
supported by clang.<br>
<br>
One of them caught my eye: __is_nothrow_constructible  — that could be handy for use in libc++.<br>
<br>
So I ran a quick test:<br>
<br>
        __is_nothrow_constructible(int)<br>
and it returned true.<br>
<br>
Then I tried:<br>
        __has_feature(is_nothrow_constructible)<br>
and it returned false.<br>
<br>
Well, that’s not useful to me; I need to be able to tell when I can use that feature.<br>
So I whipped up a program to test all of the type_traits listed in that file (attached),<br>
and to see if I can check (using __has_feature) whether or not they are implemented.<br>
<br>
Turns out that __has_feature returns false for the following type traits:<br>
<br>
        __has_feature(is_interface_class) = 0<br>
        __has_feature(is_destructible) = 0<br>
        __has_feature(is_nothrow_destructible) = 0<br>
        __has_feature(is_nothrow_assignable) = 0<br>
        __has_feature(is_nothrow_constructible) = 0<br>
<br>
__is_interface_class is a MS extension; so that’s fine.<br>
__is_destructible and __is_nothrow_destructible are described as “partially implemented”, and attempts to use them fail.<br>
<br>
On the other hand:<br>
        __is_nothrow_constructible(int) returns 1<br>
        __is_nothrow_assignable(int&, int) returns 1<br>
<br>
So these two seem to work (for at least one case)<br>
It seems to me that we should have feature tests for these type traits if we expect people to use them<br>
<br>
So, I’d like to see<br>
        __has_feature(is_nothrow_constructible)<br>
and     __has_feature(is_nothrow_assignable)<br>
<br>
return 1<br>
<span class="HOEnZb"><font color="#888888"><br>
<br>
— Marshall<br>
<br>
<br>
</font></span><br>_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
<br></blockquote></div><br></div>