On 12/05/17 21:33 +0300, Ville Voutilainen wrote:
libstdc++-v3/
Implement new C++ intrinsics __is_assignable and __is_constructible.
* include/std/type_traits (__do_is_static_castable_impl): Remove.
(__is_static_castable_impl, __is_static_castable_safe): Likewise.
(__is_static_castable, __do_is_direct_constructible_impl): Likewise.
(__is_direct_constructible_impl): Likewise.
(__is_direct_constructible_new_safe): Likewise.
(__is_base_to_derived_ref, __is_lvalue_to_rvalue_ref): Likewise.
(__is_direct_constructible_ref_cast): Likewise.
(__is_direct_constructible_new, __is_direct_constructible): Likewise.
(__do_is_nary_constructible_impl): Likewise.
(__is_nary_constructible_impl, __is_nary_constructible): Likewise.
(__is_constructible_impl): Likewise.
(is_constructible): Call the intrinsic.
(__is_assignable_helper): Remove.
(is_assignable): Call the intrinsic.
(is_trivially_constructible): Likewise.
(is_trivially_assignable): Likewise.
(testsuite/20_util/declval/requirements/1_neg.cc): Adjust.
(testsuite/20_util/make_signed/requirements/typedefs_neg.cc): Likewise.
(testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc):
Likewise.
The libstdc++ parts make me happy. I have fairly high confidence in
our tests for is_constructible and is_assignable (thanks, Daniel!) so
would be happy to approve the library parts.
I'll try the patch against the libc++ testsuite too.