alloc_convert_copy.pass.cpp revision bc8d3f97eb5c958007f2713238472e0c1c8fe02c
15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)//===----------------------------------------------------------------------===// 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// ��������������������The LLVM Compiler Infrastructure 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// This file is distributed under the University of Illinois Open Source 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// License. See LICENSE.TXT for details. 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)//===----------------------------------------------------------------------===// 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// <tuple> 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// template <class... Types> class tuple; 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// template <class Alloc, class... UTypes> 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// tuple(allocator_arg_t, const Alloc& a, const tuple<UTypes...>&); 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include <tuple> 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include <cassert> 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "../allocators.h" 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "../alloc_first.h" 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "../alloc_last.h" 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)int main() 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) typedef std::tuple<double> T0; 2853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) typedef std::tuple<int> T1; 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) T0 t0(2.5); 3053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) T1 t1(std::allocator_arg, A1<int>(), t0); 3153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) assert(std::get<0>(t1) == 2); 3253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) } 3353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) { 3453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) typedef std::tuple<int> T0; 3553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) typedef std::tuple<alloc_first> T1; 365267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) T0 t0(2); 3753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) alloc_first::allocator_constructed = false; 381e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) T1 t1(std::allocator_arg, A1<int>(5), t0); 391e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) assert(alloc_first::allocator_constructed); 4053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) assert(std::get<0>(t1) == 2); 4153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) } 4251b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) { 4309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) typedef std::tuple<int, int> T0; 4453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) typedef std::tuple<alloc_first, alloc_last> T1; 4553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) T0 t0(2, 3); 4653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) alloc_first::allocator_constructed = false; 4753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) alloc_last::allocator_constructed = false; 4853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) T1 t1(std::allocator_arg, A1<int>(5), t0); 4953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) assert(alloc_first::allocator_constructed); 5053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) assert(alloc_last::allocator_constructed); 515267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) assert(std::get<0>(t1) == 2); 521e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) assert(std::get<1>(t1) == 3); 5353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) } 545267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) { 5553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) typedef std::tuple<double, int, int> T0; 5653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) typedef std::tuple<int, alloc_first, alloc_last> T1; 575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) T0 t0(1.5, 2, 3); 58c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) alloc_first::allocator_constructed = false; 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) alloc_last::allocator_constructed = false; 60c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) T1 t1(std::allocator_arg, A1<int>(5), t0); 61c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) assert(alloc_first::allocator_constructed); 62c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) assert(alloc_last::allocator_constructed); 63c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) assert(std::get<0>(t1) == 1); 64c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) assert(std::get<1>(t1) == 2); 65c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) assert(std::get<2>(t1) == 3); 66c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) } 67c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} 68c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)