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 115839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier 125839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier// <tuple> 135839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier 145839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier// template <class... Types> 155839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier// class tuple_size<tuple<Types...>> 165839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier// : public integral_constant<size_t, sizeof...(Types)> { }; 175839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier 185839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier// Expect failures with a reference type, pointer type, and a non-tuple type. 195839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier 205839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier#include <tuple> 215839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier 225839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselierint main() 235839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier{ 24408438494ba3628b07e8e63216367e8343cc1e98Eric Fiselier (void)std::tuple_size<std::tuple<> &>::value; // expected-error {{implicit instantiation of undefined template}} 25408438494ba3628b07e8e63216367e8343cc1e98Eric Fiselier (void)std::tuple_size<int>::value; // expected-error {{implicit instantiation of undefined template}} 26408438494ba3628b07e8e63216367e8343cc1e98Eric Fiselier (void)std::tuple_size<std::tuple<>*>::value; // expected-error {{implicit instantiation of undefined template}} 275839fedf289f656cc6819a775a0328b643dc7c6bEric Fiselier} 28