aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVille Voutilainen <ville.voutilainen@gmail.com>2016-08-15 15:46:47 +0300
committerVille Voutilainen <ville@gcc.gnu.org>2016-08-15 15:46:47 +0300
commit24299f6544bebf5d462437118ad96f1fa63d813b (patch)
tree0c1eb6633c5d5a9734dfbf309e97cb3dee0fed95
parent0657379e3b391dad8c337468fd065e2e583189fd (diff)
downloadgcc-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/ChangeLog8
-rw-r--r--libstdc++-v3/include/std/tuple4
-rw-r--r--libstdc++-v3/testsuite/20_util/tuple/make_from_tuple/1.cc6
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
{