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