diff options
author | Ville Voutilainen <ville.voutilainen@gmail.com> | 2016-08-15 15:46:47 +0300 |
---|---|---|
committer | Ville Voutilainen <ville@gcc.gnu.org> | 2016-08-15 15:46:47 +0300 |
commit | 24299f6544bebf5d462437118ad96f1fa63d813b (patch) | |
tree | 0c1eb6633c5d5a9734dfbf309e97cb3dee0fed95 | |
parent | 0657379e3b391dad8c337468fd065e2e583189fd (diff) | |
download | gcc-24299f6544bebf5d462437118ad96f1fa63d813b.zip gcc-24299f6544bebf5d462437118ad96f1fa63d813b.tar.gz gcc-24299f6544bebf5d462437118ad96f1fa63d813b.tar.bz2 |
Add a feature macro for C++17 make_from_tuple.
* include/std/tuple (__cpp_lib_make_from_tuple): New.
* testsuite/20_util/tuple/make_from_tuple/1.cc: Adjust.
From-SVN: r239480
-rw-r--r-- | libstdc++-v3/ChangeLog | 8 | ||||
-rw-r--r-- | libstdc++-v3/include/std/tuple | 4 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/20_util/tuple/make_from_tuple/1.cc | 6 |
3 files changed, 17 insertions, 1 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 829f78e..05ee02a 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,11 @@ +2016-08-15 Ville Voutilainen <ville.voutilainen@gmail.com> + + Add a feature macro for C++17 make_from_tuple. + * include/std/tuple (__cpp_lib_make_from_tuple): New. + (__make_from_tuple_impl(_Tuple&&, index_sequence<_Idx...>)): + Qualify the call to get<>(). + * testsuite/20_util/tuple/make_from_tuple/1.cc: Adjust. + 2016-08-15 Uros Bizjak <ubizjak@gmail.com> * src/filesystem/ops.cc: Always include ostream and diff --git a/libstdc++-v3/include/std/tuple b/libstdc++-v3/include/std/tuple index 3403048..29db833 100644 --- a/libstdc++-v3/include/std/tuple +++ b/libstdc++-v3/include/std/tuple @@ -1656,10 +1656,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _Indices{}); } +#define __cpp_lib_make_from_tuple 201606 + template <typename _Tp, typename _Tuple, size_t... _Idx> constexpr _Tp __make_from_tuple_impl(_Tuple&& __t, index_sequence<_Idx...>) - { return _Tp(get<_Idx>(std::forward<_Tuple>(__t))...); } + { return _Tp(std::get<_Idx>(std::forward<_Tuple>(__t))...); } template <typename _Tp, typename _Tuple> constexpr _Tp diff --git a/libstdc++-v3/testsuite/20_util/tuple/make_from_tuple/1.cc b/libstdc++-v3/testsuite/20_util/tuple/make_from_tuple/1.cc index 459dc74..17aca31 100644 --- a/libstdc++-v3/testsuite/20_util/tuple/make_from_tuple/1.cc +++ b/libstdc++-v3/testsuite/20_util/tuple/make_from_tuple/1.cc @@ -20,6 +20,12 @@ #include <tuple> #include <testsuite_hooks.h> +#ifndef __cpp_lib_make_from_tuple +# error "Feature-test macro for make_from_tuple missing." +#elif __cpp_lib_make_from_tuple < 201606 +# error "Feature-test macro for make_from_tuple has the wrong value." +#endif + template <class T, class U, class V> struct ThreeParam { |