-
- Downloads
Implement new C++ intrinsics __is_assignable and __is_constructible.
c-family/ Implement new C++ intrinsics __is_assignable and __is_constructible. * c-common.c (__is_assignable, __is_constructible): New. * c-common.h (RID_IS_ASSIGNABLE, RID_IS_CONSTRUCTIBLE): Likewise. cp/ PR c++/80654 PR c++/80682 Implement new C++ intrinsics __is_assignable and __is_constructible. * cp-tree.h (CPTK_IS_ASSIGNABLE, CPTK_IS_CONSTRUCTIBLE): New. (is_xible): New. * cxx-pretty-print.c (pp_cxx_trait_expression): Handle CPTK_IS_ASSIGNABLE and CPTK_IS_CONSTRUCTIBLE. * method.c (constructible_expr): Set cp_unevaluated. (is_xible_helper): New. (is_trivially_xible): Adjust. (is_xible): New. * parser.c (cp_parser_primary_expression): Handle RID_IS_ASSIGNABLE and RID_IS_CONSTRUCTIBLE. (cp_parser_trait_expr): Likewise. * semantics.c (trait_expr_value): Handle CPTK_IS_ASSIGNABLE and CPTK_IS_CONSTRUCTIBLE. testsuite/ * g++.dg/ext/80654.C: New. 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_copy_constructible_impl): New. (is_trivially_copy_constructible): Use it. (__is_trivially_move_constructible_impl): New. (is_trivially_move_constructible): Use it. (is_trivially_assignable): Call the intrinsic. (__is_trivially_copy_assignable_impl): New. (is_trivially_copy_assignable): Use it. (__is_trivially_move_assignable_impl): New. (is_trivially_move_assignable): Use it. (testsuite/20_util/declval/requirements/1_neg.cc): Adjust. (testsuite/20_util/is_trivially_copy_assignable/value.cc): Add test for void. (testsuite/20_util/is_trivially_copy_constructible/value.cc): Likewise. (testsuite/20_util/is_trivially_move_assignable/value.cc): Likewise. (testsuite/20_util/is_trivially_move_constructible/value.cc): Likewise. (testsuite/20_util/make_signed/requirements/typedefs_neg.cc): Adjust. (testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc): Likewise. From-SVN: r248153
Showing
- gcc/c-family/ChangeLog 6 additions, 0 deletionsgcc/c-family/ChangeLog
- gcc/c-family/c-common.c 2 additions, 0 deletionsgcc/c-family/c-common.c
- gcc/c-family/c-common.h 1 addition, 0 deletionsgcc/c-family/c-common.h
- gcc/cp/ChangeLog 19 additions, 0 deletionsgcc/cp/ChangeLog
- gcc/cp/cp-tree.h 4 additions, 1 deletiongcc/cp/cp-tree.h
- gcc/cp/cxx-pretty-print.c 6 additions, 0 deletionsgcc/cp/cxx-pretty-print.c
- gcc/cp/method.c 35 additions, 7 deletionsgcc/cp/method.c
- gcc/cp/parser.c 10 additions, 0 deletionsgcc/cp/parser.c
- gcc/cp/semantics.c 10 additions, 0 deletionsgcc/cp/semantics.c
- gcc/testsuite/g++.dg/ext/80654.C 18 additions, 0 deletionsgcc/testsuite/g++.dg/ext/80654.C
- libstdc++-v3/ChangeLog 37 additions, 0 deletionslibstdc++-v3/ChangeLog
- libstdc++-v3/include/std/type_traits 60 additions, 230 deletionslibstdc++-v3/include/std/type_traits
- libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc 1 addition, 1 deletionlibstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc
- libstdc++-v3/testsuite/20_util/is_trivially_copy_assignable/value.cc 2 additions, 0 deletions...3/testsuite/20_util/is_trivially_copy_assignable/value.cc
- libstdc++-v3/testsuite/20_util/is_trivially_copy_constructible/value.cc 2 additions, 0 deletions...estsuite/20_util/is_trivially_copy_constructible/value.cc
- libstdc++-v3/testsuite/20_util/is_trivially_move_assignable/value.cc 2 additions, 0 deletions...3/testsuite/20_util/is_trivially_move_assignable/value.cc
- libstdc++-v3/testsuite/20_util/is_trivially_move_constructible/value.cc 2 additions, 0 deletions...estsuite/20_util/is_trivially_move_constructible/value.cc
- libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc 1 addition, 1 deletion...estsuite/20_util/make_signed/requirements/typedefs_neg.cc
- libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc 2 additions, 2 deletions...tsuite/20_util/make_unsigned/requirements/typedefs_neg.cc
Loading
Please register or sign in to comment