summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libcxx/include/tuple5
-rw-r--r--libcxx/test/std/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type.fail.cpp3
2 files changed, 8 insertions, 0 deletions
diff --git a/libcxx/include/tuple b/libcxx/include/tuple
index 32f43805ff7..b0ab1c930b7 100644
--- a/libcxx/include/tuple
+++ b/libcxx/include/tuple
@@ -1013,6 +1013,11 @@ struct __find_exactly_one_checked {
static_assert(value != __ambiguous,"type occurs more than once in type list");
};
+template <class _T1>
+struct __find_exactly_one_checked<_T1> {
+ static_assert(!is_same<_T1, _T1>::value, "type not in empty type list");
+};
+
} // namespace __find_detail;
template <typename _T1, typename... _Args>
diff --git a/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type.fail.cpp b/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type.fail.cpp
index 6375b77cd4a..74e6efd983b 100644
--- a/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type.fail.cpp
+++ b/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type.fail.cpp
@@ -20,6 +20,9 @@ void test_bad_index() {
(void)std::get<long>(t1); // expected-note {{requested here}}
(void)std::get<char>(t1); // expected-note {{requested here}}
// expected-error@tuple:* 2 {{type occurs more than once}}
+ std::tuple<> t0;
+ (void)std::get<char*>(t0); // expected-node {{requested here}}
+ // expected-error@tuple:* 1 {{type not in empty type list}}
}
void test_bad_return_type() {
OpenPOWER on IntegriCloud