diff options
-rw-r--r-- | libcxx/include/tuple | 5 | ||||
-rw-r--r-- | libcxx/test/std/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type.fail.cpp | 3 |
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() { |