1dc71a77dSLouis Dionne //===----------------------------------------------------------------------===// 2dc71a77dSLouis Dionne // 3dc71a77dSLouis Dionne // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4dc71a77dSLouis Dionne // See https://llvm.org/LICENSE.txt for license information. 5dc71a77dSLouis Dionne // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6dc71a77dSLouis Dionne // 7dc71a77dSLouis Dionne //===----------------------------------------------------------------------===// 8dc71a77dSLouis Dionne 9dc71a77dSLouis Dionne // <tuple> 10dc71a77dSLouis Dionne 11dc71a77dSLouis Dionne // template <class... Types> class tuple; 12dc71a77dSLouis Dionne 13dc71a77dSLouis Dionne // template <size_t I, class... Types> 14dc71a77dSLouis Dionne // struct tuple_element<I, tuple<Types...> > 15dc71a77dSLouis Dionne // { 16dc71a77dSLouis Dionne // typedef Ti type; 17dc71a77dSLouis Dionne // }; 18dc71a77dSLouis Dionne 19dc71a77dSLouis Dionne // UNSUPPORTED: c++03 20dc71a77dSLouis Dionne 21dc71a77dSLouis Dionne #include <tuple> 22dc71a77dSLouis Dionne 23dc71a77dSLouis Dionne using T = std::tuple<int, long, void*>; 24dc71a77dSLouis Dionne using E1 = typename std::tuple_element<1, T &>::type; // expected-error{{undefined template}} 25dc71a77dSLouis Dionne using E2 = typename std::tuple_element<3, T>::type; 26*9bb9ec38SLouis Dionne using E3 = typename std::tuple_element<4, T const>::type; // expected-error@*:* 2 {{static assertion failed}} 27