copy.pass.cpp revision 11cd02dfb91661c65134cac258cf5924270e9d2b
10debc9aff4c0cbc28e083a948081d91b0f171319Adam Lesinski//===----------------------------------------------------------------------===//
20debc9aff4c0cbc28e083a948081d91b0f171319Adam Lesinski//
30debc9aff4c0cbc28e083a948081d91b0f171319Adam Lesinski//                     The LLVM Compiler Infrastructure
40debc9aff4c0cbc28e083a948081d91b0f171319Adam Lesinski//
50debc9aff4c0cbc28e083a948081d91b0f171319Adam Lesinski// This file is dual licensed under the MIT and the University of Illinois Open
60debc9aff4c0cbc28e083a948081d91b0f171319Adam Lesinski// Source Licenses. See LICENSE.TXT for details.
70debc9aff4c0cbc28e083a948081d91b0f171319Adam Lesinski//
80debc9aff4c0cbc28e083a948081d91b0f171319Adam Lesinski//===----------------------------------------------------------------------===//
90debc9aff4c0cbc28e083a948081d91b0f171319Adam Lesinski
100debc9aff4c0cbc28e083a948081d91b0f171319Adam Lesinski// <tuple>
110debc9aff4c0cbc28e083a948081d91b0f171319Adam Lesinski
120debc9aff4c0cbc28e083a948081d91b0f171319Adam Lesinski// template <class... Types> class tuple;
130debc9aff4c0cbc28e083a948081d91b0f171319Adam Lesinski
140debc9aff4c0cbc28e083a948081d91b0f171319Adam Lesinski// tuple& operator=(const tuple& u);
150debc9aff4c0cbc28e083a948081d91b0f171319Adam Lesinski
160debc9aff4c0cbc28e083a948081d91b0f171319Adam Lesinski// UNSUPPORTED: c++98, c++03
170debc9aff4c0cbc28e083a948081d91b0f171319Adam Lesinski
180debc9aff4c0cbc28e083a948081d91b0f171319Adam Lesinski#include <tuple>
1953ab92d89069fb0178ba98eb641a6fc87145543aAdam Lesinski#include <string>
20cf76872a62075abf9008e99ca08413fb70761dc2Amith Yamasani#include <cassert>
21cf76872a62075abf9008e99ca08413fb70761dc2Amith Yamasani
220debc9aff4c0cbc28e083a948081d91b0f171319Adam Lesinskiint main()
23cf76872a62075abf9008e99ca08413fb70761dc2Amith Yamasani{
247f61e96db7c90c1f4418359672aa4656aebee500Adam Lesinski    {
250debc9aff4c0cbc28e083a948081d91b0f171319Adam Lesinski        typedef std::tuple<> T;
263516800b611a79339a3c188332d13a26e9086b09Adam Lesinski        T t0;
27b0ff32245cb6b51e43dd3ee40b86d683c62de2b9Amith Yamasani        T t;
280debc9aff4c0cbc28e083a948081d91b0f171319Adam Lesinski        t = t0;
290debc9aff4c0cbc28e083a948081d91b0f171319Adam Lesinski    }
30b0ff32245cb6b51e43dd3ee40b86d683c62de2b9Amith Yamasani    {
31e4a8da8ea241858b52d8122480316db79582c44dAmith Yamasani        typedef std::tuple<int> T;
323c153519ca5f2b66b88901374383f943c9d77df7Adam Lesinski        T t0(2);
330debc9aff4c0cbc28e083a948081d91b0f171319Adam Lesinski        T t;
340debc9aff4c0cbc28e083a948081d91b0f171319Adam Lesinski        t = t0;
353c153519ca5f2b66b88901374383f943c9d77df7Adam Lesinski        assert(std::get<0>(t) == 2);
363c153519ca5f2b66b88901374383f943c9d77df7Adam Lesinski    }
37cf76872a62075abf9008e99ca08413fb70761dc2Amith Yamasani    {
3853ab92d89069fb0178ba98eb641a6fc87145543aAdam Lesinski        typedef std::tuple<int, char> T;
393516800b611a79339a3c188332d13a26e9086b09Adam Lesinski        T t0(2, 'a');
403c153519ca5f2b66b88901374383f943c9d77df7Adam Lesinski        T t;
417f61e96db7c90c1f4418359672aa4656aebee500Adam Lesinski        t = t0;
42b0ff32245cb6b51e43dd3ee40b86d683c62de2b9Amith Yamasani        assert(std::get<0>(t) == 2);
4306bf824628c118fbd5ad6756913d7fd63a6f4ce5Amith Yamasani        assert(std::get<1>(t) == 'a');
44b0ff32245cb6b51e43dd3ee40b86d683c62de2b9Amith Yamasani    }
4515e47235c055495ec0ccc24768a6746a960d3a61Amith Yamasani    {
460debc9aff4c0cbc28e083a948081d91b0f171319Adam Lesinski        typedef std::tuple<int, char, std::string> T;
470debc9aff4c0cbc28e083a948081d91b0f171319Adam Lesinski        const T t0(2, 'a', "some text");
480debc9aff4c0cbc28e083a948081d91b0f171319Adam Lesinski        T t;
4906bf824628c118fbd5ad6756913d7fd63a6f4ce5Amith Yamasani        t = t0;
500debc9aff4c0cbc28e083a948081d91b0f171319Adam Lesinski        assert(std::get<0>(t) == 2);
510debc9aff4c0cbc28e083a948081d91b0f171319Adam Lesinski        assert(std::get<1>(t) == 'a');
52520d8f2ac6ad2c3cd244e1f710103b3a43a41725Amith Yamasani        assert(std::get<2>(t) == "some text");
537eb599b267d00cbde891c0a87924f2f5086f4497Jeff Hao    }
547f61e96db7c90c1f4418359672aa4656aebee500Adam Lesinski}
5506bf824628c118fbd5ad6756913d7fd63a6f4ce5Amith Yamasani