1 | //===----------------------------------------------------------------------===// |
2 | // |
3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | // See https://llvm.org/LICENSE.txt for license information. |
5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | // |
7 | //===----------------------------------------------------------------------===// |
8 | |
9 | // <tuple> |
10 | |
11 | // template <class... Types> class tuple; |
12 | |
13 | // template <size_t I, class... Types> |
14 | // typename tuple_element<I, tuple<Types...> >::type const& |
15 | // get(const tuple<Types...>& t); |
16 | |
17 | // UNSUPPORTED: c++03 |
18 | |
19 | #include <tuple> |
20 | #include <string> |
21 | #include <cassert> |
22 | |
23 | int main(int, char**) |
24 | { |
25 | { |
26 | typedef std::tuple<double&, std::string, int> T; |
27 | double d = 1.5; |
28 | const T t(d, "high" , 5); |
29 | assert(std::get<0>(t) == 1.5); |
30 | assert(std::get<1>(t) == "high" ); |
31 | assert(std::get<2>(t) == 5); |
32 | std::get<0>(t: t) = 2.5; |
33 | assert(std::get<0>(t) == 2.5); |
34 | assert(std::get<1>(t) == "high" ); |
35 | assert(std::get<2>(t) == 5); |
36 | assert(d == 2.5); |
37 | |
38 | std::get<1>(t: t) = "four" ; |
39 | } |
40 | |
41 | return 0; |
42 | } |
43 | |