xref: /llvm-project/libcxx/test/std/numerics/complex.number/complex.tuple/tuple_element.verify.cpp (revision 2ea5d167ae43bed5a511d5d819ae7c52cc76ec5c)
1*2ea5d167SHristo Hristov //===----------------------------------------------------------------------===//
2*2ea5d167SHristo Hristov //
3*2ea5d167SHristo Hristov // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*2ea5d167SHristo Hristov // See https://llvm.org/LICENSE.txt for license information.
5*2ea5d167SHristo Hristov // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*2ea5d167SHristo Hristov //
7*2ea5d167SHristo Hristov //===----------------------------------------------------------------------===//
8*2ea5d167SHristo Hristov 
9*2ea5d167SHristo Hristov // UNSUPPORTED: c++03, c++11, c++14, c++17, c++20, c++23
10*2ea5d167SHristo Hristov 
11*2ea5d167SHristo Hristov // <complex>
12*2ea5d167SHristo Hristov 
13*2ea5d167SHristo Hristov //   template<size_t I, class T> struct tuple_element;
14*2ea5d167SHristo Hristov 
15*2ea5d167SHristo Hristov #include <cassert>
16*2ea5d167SHristo Hristov #include <complex>
17*2ea5d167SHristo Hristov #include <concepts>
18*2ea5d167SHristo Hristov 
19*2ea5d167SHristo Hristov template <typename T>
test()20*2ea5d167SHristo Hristov void test() {
21*2ea5d167SHristo Hristov   using C = std::complex<T>;
22*2ea5d167SHristo Hristov 
23*2ea5d167SHristo Hristov   // expected-error-re@*:* 3 {{static assertion failed {{.*}}Index value is out of range.}}
24*2ea5d167SHristo Hristov   [[maybe_unused]] std::tuple_element<3, C> te{};
25*2ea5d167SHristo Hristov }
26*2ea5d167SHristo Hristov 
test()27*2ea5d167SHristo Hristov void test() {
28*2ea5d167SHristo Hristov   test<float>();
29*2ea5d167SHristo Hristov   test<double>();
30*2ea5d167SHristo Hristov   test<long double>();
31*2ea5d167SHristo Hristov }
32