Make tuple's constructor and std::get<>(tuple) constexpr. Final stage of fixing bug #16599. Thanks to Howard for the review and updates.
llvm-svn: 186834
diff --git a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/copy.pass.cpp b/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/copy.pass.cpp
index 7de3ef6..fd953f8 100644
--- a/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/copy.pass.cpp
+++ b/libcxx/test/utilities/tuple/tuple.tuple/tuple.cnstr/copy.pass.cpp
@@ -17,6 +17,8 @@
#include <string>
#include <cassert>
+struct Empty {};
+
int main()
{
{
@@ -45,4 +47,17 @@
assert(std::get<1>(t) == 'a');
assert(std::get<2>(t) == "some text");
}
+#if _LIBCPP_STD_VER > 11
+ {
+ typedef std::tuple<int> T;
+ constexpr T t0(2);
+ constexpr T t = t0;
+ static_assert(std::get<0>(t) == 2, "");
+ }
+ {
+ typedef std::tuple<Empty> T;
+ constexpr T t0;
+ constexpr T t = t0;
+ }
+#endif
}