blob: 898543fbce4be9583864d489b476ccd57718e1a7 [file] [log] [blame]
Eric Fiselier257fd692016-05-07 01:04:55 +00001//===----------------------------------------------------------------------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is dual licensed under the MIT and the University of Illinois Open
6// Source Licenses. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10// UNSUPPORTED: c++98, c++03
11
12// <experimental/memory_resource>
13
14// template <class Alloc> class resource_adaptor_imp;
15
16#include <experimental/memory_resource>
17#include <type_traits>
18#include <memory>
19#include <cassert>
20
21namespace ex = std::experimental::pmr;
22
23int main()
24{
25 typedef ex::resource_adaptor<std::allocator<void>> R;
26 typedef ex::resource_adaptor<std::allocator<long>> R2;
27 static_assert(std::is_same<R, R2>::value, "");
28 {
29 static_assert(std::is_base_of<ex::memory_resource, R>::value, "");
30 static_assert(std::is_same<R::allocator_type, std::allocator<char>>::value, "");
31 }
32 {
33 static_assert(std::is_default_constructible<R>::value, "");
34 static_assert(std::is_copy_constructible<R>::value, "");
35 static_assert(std::is_move_constructible<R>::value, "");
36 static_assert(std::is_copy_assignable<R>::value, "");
37 static_assert(std::is_move_assignable<R>::value, "");
38 }
39}