outer_allocator.pass.cpp revision a2ccccce89dd50f1ef286a6ca1cdb86980e106f0
1e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton//===----------------------------------------------------------------------===// 2e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton// 3e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton// The LLVM Compiler Infrastructure 4e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton// 5e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton// This file is distributed under the University of Illinois Open Source 6e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton// License. See LICENSE.TXT for details. 7e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton// 8e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton//===----------------------------------------------------------------------===// 9e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton 10d891f9b872103235cfd2ed452c6f14a4394d9b3aDaniel Malea// <memory> 11d891f9b872103235cfd2ed452c6f14a4394d9b3aDaniel Malea 12e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton// template <class OuterAlloc, class... InnerAllocs> 13e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton// class scoped_allocator_adaptor 14e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton 153600d497832c398ffafcba1935389125e15683a3Stephen Wilson// outer_allocator_type& outer_allocator(); 163600d497832c398ffafcba1935389125e15683a3Stephen Wilson// const outer_allocator_type& outer_allocator() const; 173600d497832c398ffafcba1935389125e15683a3Stephen Wilson 18e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton#include <scoped_allocator> 19e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton#include <cassert> 20e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton 21e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton#include "../allocators.h" 2248a202dd3ac1fb4ee6709074448dc4d221fa020cGreg Clayton 23e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Claytonint main() 24e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton{ 2549ce8969d3154e1560106cfe530444c09410f217Greg Clayton#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES 263600d497832c398ffafcba1935389125e15683a3Stephen Wilson 27e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton { 28e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton typedef std::scoped_allocator_adaptor<A1<int>> A; 29e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton A a(A1<int>(5)); 303600d497832c398ffafcba1935389125e15683a3Stephen Wilson assert(a.outer_allocator() == A1<int>(5)); 31e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton } 32e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton { 33e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton typedef std::scoped_allocator_adaptor<A1<int>, A2<int>> A; 34e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton A a(A1<int>(5), A2<int>(6)); 353600d497832c398ffafcba1935389125e15683a3Stephen Wilson assert(a.outer_allocator() == A1<int>(5)); 3648a202dd3ac1fb4ee6709074448dc4d221fa020cGreg Clayton } 3748a202dd3ac1fb4ee6709074448dc4d221fa020cGreg Clayton { 383600d497832c398ffafcba1935389125e15683a3Stephen Wilson typedef std::scoped_allocator_adaptor<A1<int>, A2<int>, A3<int>> A; 39b1db658333cdebca31a128be95e926d80c3c7796Greg Clayton A a(A1<int>(5), A2<int>(6), A3<int>(8)); 403600d497832c398ffafcba1935389125e15683a3Stephen Wilson assert(a.outer_allocator() == A1<int>(5)); 41b1db658333cdebca31a128be95e926d80c3c7796Greg Clayton } 42b1db658333cdebca31a128be95e926d80c3c7796Greg Clayton 43b1db658333cdebca31a128be95e926d80c3c7796Greg Clayton#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES 44b1db658333cdebca31a128be95e926d80c3c7796Greg Clayton} 45b170aee2daacc83e3d71c3e3acc9d56c89893a7bGreg Clayton