1 //===----------------------------------------------------------------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // REQUIRES: c++experimental
11 // UNSUPPORTED: c++98, c++03
13 // <experimental/memory_resource>
15 // template <class T> class polymorphic_allocator
18 // polymorphic_allocator<T>::resource() const
20 #include <experimental/memory_resource>
21 #include <type_traits>
24 namespace ex = std::experimental::pmr;
28 typedef ex::polymorphic_allocator<void> A;
32 std::is_same<decltype(a.resource()), ex::memory_resource*>::value
37 ex::memory_resource * mptr = (ex::memory_resource*)42;
39 assert(a.resource() == mptr);
43 assert(a.resource() == nullptr);
44 assert(a.resource() == nullptr);
48 assert(a.resource() == ex::get_default_resource());
51 ex::memory_resource * mptr = (ex::memory_resource*)42;
52 ex::set_default_resource(mptr);
54 assert(a.resource() == mptr);
55 assert(a.resource() == ex::get_default_resource());