alloc.pass.cpp revision bc8d3f97eb5c958007f2713238472e0c1c8fe02c
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)//===----------------------------------------------------------------------===// 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// ��������������������The LLVM Compiler Infrastructure 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// This file is distributed under the University of Illinois Open Source 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// License. See LICENSE.TXT for details. 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// 8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)//===----------------------------------------------------------------------===// 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// <tuple> 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// template <class... Types> class tuple; 13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// template <class Alloc> 1503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// tuple(allocator_arg_t, const Alloc& a); 1603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <tuple> 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <cassert> 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "../DefaultOnly.h" 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "../allocators.h" 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "../alloc_first.h" 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "../alloc_last.h" 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int main() 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles){ 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::tuple<> t(std::allocator_arg, A1<int>()); 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::tuple<int> t(std::allocator_arg, A1<int>()); 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) assert(std::get<0>(t) == 0); 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::tuple<DefaultOnly> t(std::allocator_arg, A1<int>()); 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) assert(std::get<0>(t) == DefaultOnly()); 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) assert(!alloc_first::allocator_constructed); 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::tuple<alloc_first> t(std::allocator_arg, A1<int>(5)); 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) assert(alloc_first::allocator_constructed); 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) assert(std::get<0>(t) == alloc_first()); 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) assert(!alloc_last::allocator_constructed); 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::tuple<alloc_last> t(std::allocator_arg, A1<int>(5)); 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) assert(alloc_last::allocator_constructed); 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) assert(std::get<0>(t) == alloc_last()); 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) alloc_first::allocator_constructed = false; 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::tuple<DefaultOnly, alloc_first> t(std::allocator_arg, A1<int>(5)); 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) assert(std::get<0>(t) == DefaultOnly()); 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) assert(alloc_first::allocator_constructed); 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) assert(std::get<1>(t) == alloc_first()); 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) alloc_first::allocator_constructed = false; 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) alloc_last::allocator_constructed = false; 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::tuple<DefaultOnly, alloc_first, alloc_last> t(std::allocator_arg, 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) A1<int>(5)); 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) assert(std::get<0>(t) == DefaultOnly()); 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) assert(alloc_first::allocator_constructed); 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) assert(std::get<1>(t) == alloc_first()); 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) assert(alloc_last::allocator_constructed); 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) assert(std::get<2>(t) == alloc_last()); 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) alloc_first::allocator_constructed = false; 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) alloc_last::allocator_constructed = false; 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::tuple<DefaultOnly, alloc_first, alloc_last> t(std::allocator_arg, 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) A2<int>(5)); 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) assert(std::get<0>(t) == DefaultOnly()); 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) assert(!alloc_first::allocator_constructed); 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) assert(std::get<1>(t) == alloc_first()); 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) assert(!alloc_last::allocator_constructed); 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) assert(std::get<2>(t) == alloc_last()); 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)