Handle std::get<T>(...) for std::tuple<>

llvm-svn: 274422
This commit is contained in:
Eric Fiselier
2016-07-02 03:46:08 +00:00
parent 91ea3fb698
commit 4f905b8daa
2 changed files with 8 additions and 0 deletions

View File

@@ -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>

View File

@@ -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() {