diff options
| author | Eric Fiselier <eric@efcs.ca> | 2016-07-02 03:46:08 +0000 |
|---|---|---|
| committer | Eric Fiselier <eric@efcs.ca> | 2016-07-02 03:46:08 +0000 |
| commit | 4f905b8daaf9826b91abe30fe8b5c5cd1ee7caa9 (patch) | |
| tree | 57a1f484ed7483850c9717eb7bd41980f81bba4d | |
| parent | 91ea3fb698bc33c2a7e6537d461333fe02000bfa (diff) | |
| download | bcm5719-llvm-4f905b8daaf9826b91abe30fe8b5c5cd1ee7caa9.tar.gz bcm5719-llvm-4f905b8daaf9826b91abe30fe8b5c5cd1ee7caa9.zip | |
Handle std::get<T>(...) for std::tuple<>
llvm-svn: 274422
| -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() { |

