17a6aaf9bSLouis Dionne //===----------------------------------------------------------------------===// 27a6aaf9bSLouis Dionne // 37a6aaf9bSLouis Dionne // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 47a6aaf9bSLouis Dionne // See https://llvm.org/LICENSE.txt for license information. 57a6aaf9bSLouis Dionne // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 67a6aaf9bSLouis Dionne // 77a6aaf9bSLouis Dionne //===----------------------------------------------------------------------===// 87a6aaf9bSLouis Dionne 97a6aaf9bSLouis Dionne // <tuple> 107a6aaf9bSLouis Dionne 117a6aaf9bSLouis Dionne // template <class... Types> class tuple; 127a6aaf9bSLouis Dionne 137a6aaf9bSLouis Dionne // template <size_t I, class... Types> 147a6aaf9bSLouis Dionne // typename tuple_element<I, tuple<Types...> >::type const& 157a6aaf9bSLouis Dionne // get(const tuple<Types...>& t); 167a6aaf9bSLouis Dionne 17*31cbe0f2SLouis Dionne // UNSUPPORTED: c++03 187a6aaf9bSLouis Dionne 197a6aaf9bSLouis Dionne #include <tuple> 207a6aaf9bSLouis Dionne #include <string> 217a6aaf9bSLouis Dionne #include <cassert> 227a6aaf9bSLouis Dionne main(int,char **)237a6aaf9bSLouis Dionneint main(int, char**) 247a6aaf9bSLouis Dionne { 257a6aaf9bSLouis Dionne { 267a6aaf9bSLouis Dionne typedef std::tuple<double&, std::string, int> T; 277a6aaf9bSLouis Dionne double d = 1.5; 287a6aaf9bSLouis Dionne const T t(d, "high", 5); 297a6aaf9bSLouis Dionne assert(std::get<0>(t) == 1.5); 307a6aaf9bSLouis Dionne assert(std::get<1>(t) == "high"); 317a6aaf9bSLouis Dionne assert(std::get<2>(t) == 5); 327a6aaf9bSLouis Dionne std::get<0>(t) = 2.5; 337a6aaf9bSLouis Dionne assert(std::get<0>(t) == 2.5); 347a6aaf9bSLouis Dionne assert(std::get<1>(t) == "high"); 357a6aaf9bSLouis Dionne assert(std::get<2>(t) == 5); 367a6aaf9bSLouis Dionne assert(d == 2.5); 377a6aaf9bSLouis Dionne 387a6aaf9bSLouis Dionne std::get<1>(t) = "four"; 397a6aaf9bSLouis Dionne } 407a6aaf9bSLouis Dionne 417a6aaf9bSLouis Dionne return 0; 427a6aaf9bSLouis Dionne } 43