allocate_size.pass.cpp revision b64f8b07c104c6cc986570ac8ee0ed16a9f23976
1b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien//===----------------------------------------------------------------------===// 2b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien// 3b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien// The LLVM Compiler Infrastructure 4b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien// 5b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien// This file is dual licensed under the MIT and the University of Illinois Open 6b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien// Source Licenses. See LICENSE.TXT for details. 7b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien// 8b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien//===----------------------------------------------------------------------===// 9b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien 10b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien// <memory> 11b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien 12b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien// template <class OuterAlloc, class... InnerAllocs> 13b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien// class scoped_allocator_adaptor 14b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien 15b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien// pointer allocate(size_type n); 16b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien 17b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien#include <scoped_allocator> 18b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien#include <cassert> 19b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien 20b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien#include "../allocators.h" 21b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien 22b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembienint main() 23b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien{ 24b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES 25b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien 26b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien { 27b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien typedef std::scoped_allocator_adaptor<A1<int>> A; 28b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien A a; 29b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien A1<int>::allocate_called = false; 30b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien assert(a.allocate(10) == (int*)10); 31b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien assert(A1<int>::allocate_called == true); 32b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien } 33b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien { 34b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien typedef std::scoped_allocator_adaptor<A1<int>, A2<int>> A; 35b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien A a; 36b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien A1<int>::allocate_called = false; 37b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien assert(a.allocate(10) == (int*)10); 38b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien assert(A1<int>::allocate_called == true); 39b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien } 40b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien { 41b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien typedef std::scoped_allocator_adaptor<A1<int>, A2<int>, A3<int>> A; 42b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien A a; 43b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien A1<int>::allocate_called = false; 44b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien assert(a.allocate(10) == (int*)10); 45b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien assert(A1<int>::allocate_called == true); 46b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien } 47b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien 48b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES 49b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien} 50b852fcf48a8909164d7f323dd02a35d2a8056a61Nico Sallembien