15839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier//===----------------------------------------------------------------------===//
25839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier//
35839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier//                     The LLVM Compiler Infrastructure
45839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier//
55839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier// This file is dual licensed under the MIT and the University of Illinois Open
65839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier// Source Licenses. See LICENSE.TXT for details.
75839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier//
85839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier//===----------------------------------------------------------------------===//
95839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier
105839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier// UNSUPPORTED: c++98, c++03, c++11, c++14
115839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier
125839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier// <tuple>
135839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier
145839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier// template <class T> constexpr size_t tuple_size_v = tuple_size<T>::value;
155839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier
165839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier// Expect failures with a reference type, pointer type, and a non-tuple type.
175839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier
185839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier#include <tuple>
195839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier
205839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselierint main()
215839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier{
225839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier    (void)std::tuple_size_v<std::tuple<> &>; // expected-note {{requested here}}
235839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier    (void)std::tuple_size_v<int>; // expected-note {{requested here}}
245839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier    (void)std::tuple_size_v<std::tuple<>*>; // expected-note {{requested here}}
25408438494ba3628b07e8e63216367e8343cc1e98Eric Fiselier    // expected-error@tuple:* 3 {{implicit instantiation of undefined template}}
265839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier}
27