Define std::is_callable and std::is_nothrow_callable
authorJonathan Wakely <jwakely@redhat.com>
Thu, 4 Aug 2016 18:02:56 +0000 (19:02 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Thu, 4 Aug 2016 18:02:56 +0000 (19:02 +0100)
commit42183d034d47e05814c971b2911c847e2a700941
treee0b984fc14f915b097754780a9a4583202a2dd9d
parente91f59b91956c3fac6e9d9b7cba0a52a35ea2b6b
Define std::is_callable and std::is_nothrow_callable

* doc/xml/manual/status_cxx2017.xml: Update status table.
* include/std/functional (__inv_unwrap): Move to <type_traits>.
(__invoke_impl): Remove exception specifications.
(__invoke, invoke): Add exception specifications using
__is_nothrow_callable.
* include/std/type_traits (__inv_unwrap): Move from <functional>.
(__is_callable_impl, __call_is_nt, __call_is_nothrow): New helpers.
(__is_callable, __is_nothrow_callable): New traits.
(is_callable, is_callable_v): New C++17 traits.
(is_nothrow_callable, is_nothrow_callable_v): Likewise.
* testsuite/20_util/is_callable/requirements/
explicit_instantiation.cc: New test.
* testsuite/20_util/is_callable/requirements/
explicit_instantiation_ext.cc: New test.
* testsuite/20_util/is_callable/requirements/typedefs.cc: New test.
* testsuite/20_util/is_callable/requirements/typedefs_ext.cc: New
test.
* testsuite/20_util/is_callable/value.cc: New test.
* testsuite/20_util/is_callable/value_ext.cc: New test.
* testsuite/20_util/is_nothrow_callable/requirements/
explicit_instantiation.cc: New test.
* testsuite/20_util/is_nothrow_callable/requirements/
explicit_instantiation_ext.cc: New test.
* testsuite/20_util/is_nothrow_callable/requirements/typedefs.cc:
New test.
* testsuite/20_util/is_nothrow_callable/requirements/typedefs_ext.cc:
New test.
* testsuite/20_util/is_nothrow_callable/value.cc: New test.
* testsuite/20_util/is_nothrow_callable/value_ext.cc: New test.

From-SVN: r239145
16 files changed:
libstdc++-v3/ChangeLog
libstdc++-v3/doc/xml/manual/status_cxx2017.xml
libstdc++-v3/include/std/functional
libstdc++-v3/include/std/type_traits
libstdc++-v3/testsuite/20_util/is_callable/requirements/explicit_instantiation.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/is_callable/requirements/explicit_instantiation_ext.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/is_callable/requirements/typedefs.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/is_callable/requirements/typedefs_ext.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/is_callable/value.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/is_callable/value_ext.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/is_nothrow_callable/requirements/explicit_instantiation.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/is_nothrow_callable/requirements/explicit_instantiation_ext.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/is_nothrow_callable/requirements/typedefs.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/is_nothrow_callable/requirements/typedefs_ext.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/is_nothrow_callable/value.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/is_nothrow_callable/value_ext.cc [new file with mode: 0644]