member_swap.pass.cpp revision b64f8b07c104c6cc986570ac8ee0ed16a9f23976
11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci//===----------------------------------------------------------------------===// 21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// 31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// The LLVM Compiler Infrastructure 41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// This file is dual licensed under the MIT and the University of Illinois Open 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Source Licenses. See LICENSE.TXT for details. 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci//===----------------------------------------------------------------------===// 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// <tuple> 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// template <class... Types> class tuple; 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// void swap(tuple& rhs); 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include <tuple> 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include <cassert> 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "../MoveOnly.h" 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciint main() 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci { 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci typedef std::tuple<> T; 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci T t0; 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci T t1; 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci t0.swap(t1); 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci { 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci typedef std::tuple<MoveOnly> T; 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci T t0(MoveOnly(0)); 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci T t1(MoveOnly(1)); 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci t0.swap(t1); 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci assert(std::get<0>(t0) == 1); 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci assert(std::get<0>(t1) == 0); 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci { 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci typedef std::tuple<MoveOnly, MoveOnly> T; 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci T t0(MoveOnly(0), MoveOnly(1)); 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci T t1(MoveOnly(2), MoveOnly(3)); 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci t0.swap(t1); 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci assert(std::get<0>(t0) == 2); 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci assert(std::get<1>(t0) == 3); 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci assert(std::get<0>(t1) == 0); 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci assert(std::get<1>(t1) == 1); 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci { 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci typedef std::tuple<MoveOnly, MoveOnly, MoveOnly> T; 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci T t0(MoveOnly(0), MoveOnly(1), MoveOnly(2)); 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci T t1(MoveOnly(3), MoveOnly(4), MoveOnly(5)); 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci t0.swap(t1); 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci assert(std::get<0>(t0) == 3); 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci assert(std::get<1>(t0) == 4); 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci assert(std::get<2>(t0) == 5); 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci assert(std::get<0>(t1) == 0); 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci assert(std::get<1>(t1) == 1); 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci assert(std::get<2>(t1) == 2); 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci