UTypes.pass.cpp revision bc8d3f97eb5c958007f2713238472e0c1c8fe02c
16cc654b27a9d392ac7660afcb23e3c8136e9ab28Chris Lattner//===----------------------------------------------------------------------===// 26cc654b27a9d392ac7660afcb23e3c8136e9ab28Chris Lattner// 36cc654b27a9d392ac7660afcb23e3c8136e9ab28Chris Lattner// ��������������������The LLVM Compiler Infrastructure 46cc654b27a9d392ac7660afcb23e3c8136e9ab28Chris Lattner// 56cc654b27a9d392ac7660afcb23e3c8136e9ab28Chris Lattner// This file is distributed under the University of Illinois Open Source 66cc654b27a9d392ac7660afcb23e3c8136e9ab28Chris Lattner// License. See LICENSE.TXT for details. 76cc654b27a9d392ac7660afcb23e3c8136e9ab28Chris Lattner// 86cc654b27a9d392ac7660afcb23e3c8136e9ab28Chris Lattner//===----------------------------------------------------------------------===// 96cc654b27a9d392ac7660afcb23e3c8136e9ab28Chris Lattner 106cc654b27a9d392ac7660afcb23e3c8136e9ab28Chris Lattner// <tuple> 116cc654b27a9d392ac7660afcb23e3c8136e9ab28Chris Lattner 126cc654b27a9d392ac7660afcb23e3c8136e9ab28Chris Lattner// template <class... Types> class tuple; 136cc654b27a9d392ac7660afcb23e3c8136e9ab28Chris Lattner 146cc654b27a9d392ac7660afcb23e3c8136e9ab28Chris Lattner// template <class... UTypes> 159414ae52911f1d62cabd5108e0381b9d17476157Chris Lattner// explicit tuple(UTypes&&... u); 164ffd89fa4d2788611187d1a534d2ed46adf1702cChandler Carruth 176cc654b27a9d392ac7660afcb23e3c8136e9ab28Chris Lattner#include <tuple> 183f2c8e474b8775aa1f3c2c0cb817b7f9f564e068Chris Lattner#include <cassert> 194ffd89fa4d2788611187d1a534d2ed46adf1702cChandler Carruth 204ffd89fa4d2788611187d1a534d2ed46adf1702cChandler Carruth#include "../MoveOnly.h" 216cc654b27a9d392ac7660afcb23e3c8136e9ab28Chris Lattner 226cc654b27a9d392ac7660afcb23e3c8136e9ab28Chris Lattnerint main() 236cc654b27a9d392ac7660afcb23e3c8136e9ab28Chris Lattner{ 24c240bb0ede0541426254d0e0dc81d891beda4b22Chris Lattner { 25c240bb0ede0541426254d0e0dc81d891beda4b22Chris Lattner std::tuple<MoveOnly> t(MoveOnly(0)); 26c240bb0ede0541426254d0e0dc81d891beda4b22Chris Lattner assert(std::get<0>(t) == 0); 276cc654b27a9d392ac7660afcb23e3c8136e9ab28Chris Lattner } 28c240bb0ede0541426254d0e0dc81d891beda4b22Chris Lattner { 29c240bb0ede0541426254d0e0dc81d891beda4b22Chris Lattner std::tuple<MoveOnly, MoveOnly> t(MoveOnly(0), MoveOnly(1)); 306cc654b27a9d392ac7660afcb23e3c8136e9ab28Chris Lattner assert(std::get<0>(t) == 0); 318f707e15fbd09ca948b86419bcb0c92470827ac9Chris Lattner assert(std::get<1>(t) == 1); 32e5fffe9c3fa402cb5d5167327783f82b86f52b8fNAKAMURA Takumi } 3305bce0beee87512e52428d4b80f5a8e79a949576David Greene { 34e5fffe9c3fa402cb5d5167327783f82b86f52b8fNAKAMURA Takumi std::tuple<MoveOnly, MoveOnly, MoveOnly> t(MoveOnly(0), 356cfc806a6b82b60a3e923b6b89f2b4da62cdb50bSean Silva MoveOnly(1), 36b0be4d261b1ebd0e364e3e8b5e5f124c1e7b96b5Chris Lattner MoveOnly(2)); 3761131ab15fd593a2e295d79fe2714e7bc21f2ec8Joerg Sonnenberger assert(std::get<0>(t) == 0); 38cedef1ccf0d53693b5e62d524e7ba6b2122231c7Chris Lattner assert(std::get<1>(t) == 1); 3961131ab15fd593a2e295d79fe2714e7bc21f2ec8Joerg Sonnenberger assert(std::get<2>(t) == 2); 40e5fffe9c3fa402cb5d5167327783f82b86f52b8fNAKAMURA Takumi } 41f55eed299b84a9312c3c112d59ff4e6cb048b795Chris Lattner // extensions 42c240bb0ede0541426254d0e0dc81d891beda4b22Chris Lattner { 4305bce0beee87512e52428d4b80f5a8e79a949576David Greene std::tuple<MoveOnly, MoveOnly, MoveOnly> t(MoveOnly(0), 446cfc806a6b82b60a3e923b6b89f2b4da62cdb50bSean Silva MoveOnly(1)); 45b0be4d261b1ebd0e364e3e8b5e5f124c1e7b96b5Chris Lattner assert(std::get<0>(t) == 0); 4661131ab15fd593a2e295d79fe2714e7bc21f2ec8Joerg Sonnenberger assert(std::get<1>(t) == 1); 47cedef1ccf0d53693b5e62d524e7ba6b2122231c7Chris Lattner assert(std::get<2>(t) == MoveOnly()); 4861131ab15fd593a2e295d79fe2714e7bc21f2ec8Joerg Sonnenberger } 49e5fffe9c3fa402cb5d5167327783f82b86f52b8fNAKAMURA Takumi { 506cc654b27a9d392ac7660afcb23e3c8136e9ab28Chris Lattner std::tuple<MoveOnly, MoveOnly, MoveOnly> t(MoveOnly(0)); 516cc654b27a9d392ac7660afcb23e3c8136e9ab28Chris Lattner assert(std::get<0>(t) == 0); 52f55eed299b84a9312c3c112d59ff4e6cb048b795Chris Lattner assert(std::get<1>(t) == MoveOnly()); 5305bce0beee87512e52428d4b80f5a8e79a949576David Greene assert(std::get<2>(t) == MoveOnly()); 54f55eed299b84a9312c3c112d59ff4e6cb048b795Chris Lattner } 55f55eed299b84a9312c3c112d59ff4e6cb048b795Chris Lattner} 56f55eed299b84a9312c3c112d59ff4e6cb048b795Chris Lattner