Home | History | Annotate | Download | only in allocator.adaptor
      1 //===----------------------------------------------------------------------===//
      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 // <memory>
     11 
     12 // template <class OuterAlloc, class... InnerAllocs>
     13 // class scoped_allocator_adaptor
     14 //     : public OuterAlloc
     15 // {
     16 // public:
     17 //     typedef OuterAlloc outer_allocator_type;
     18 //     typedef typename OuterTraits::size_type size_type;
     19 //     typedef typename OuterTraits::difference_type difference_type;
     20 //     typedef typename OuterTraits::pointer pointer;
     21 //     typedef typename OuterTraits::const_pointer const_pointer;
     22 //     typedef typename OuterTraits::void_pointer void_pointer;
     23 //     typedef typename OuterTraits::const_void_pointer const_void_pointer;
     24 // };
     25 
     26 #include <scoped_allocator>
     27 #include <type_traits>
     28 
     29 #include "allocators.h"
     30 
     31 int main()
     32 {
     33 #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
     34 
     35     static_assert((std::is_base_of<
     36         A1<int>,
     37         std::scoped_allocator_adaptor<A1<int>>
     38         >::value), "");
     39 
     40     static_assert((std::is_same<
     41         std::scoped_allocator_adaptor<A1<int>>::outer_allocator_type,
     42         A1<int>>::value), "");
     43 
     44     static_assert((std::is_same<
     45         std::scoped_allocator_adaptor<A1<int>>::size_type,
     46         std::make_unsigned<std::ptrdiff_t>::type>::value), "");
     47 
     48     static_assert((std::is_same<
     49         std::scoped_allocator_adaptor<A1<int>>::difference_type,
     50         std::ptrdiff_t>::value), "");
     51 
     52     static_assert((std::is_same<
     53         std::scoped_allocator_adaptor<A1<int>>::pointer,
     54         int*>::value), "");
     55 
     56     static_assert((std::is_same<
     57         std::scoped_allocator_adaptor<A1<int>>::const_pointer,
     58         const int*>::value), "");
     59 
     60     static_assert((std::is_same<
     61         std::scoped_allocator_adaptor<A1<int>>::void_pointer,
     62         void*>::value), "");
     63 
     64     static_assert((std::is_same<
     65         std::scoped_allocator_adaptor<A1<int>>::const_void_pointer,
     66         const void*>::value), "");
     67 
     68     static_assert((std::is_base_of<
     69         A2<int>,
     70         std::scoped_allocator_adaptor<A2<int>, A1<int>>
     71         >::value), "");
     72 
     73     static_assert((std::is_same<
     74         std::scoped_allocator_adaptor<A2<int>, A1<int>>::outer_allocator_type,
     75         A2<int>>::value), "");
     76 
     77     static_assert((std::is_same<
     78         std::scoped_allocator_adaptor<A2<int>, A1<int>>::size_type,
     79         unsigned>::value), "");
     80 
     81     static_assert((std::is_same<
     82         std::scoped_allocator_adaptor<A2<int>, A1<int>>::difference_type,
     83         int>::value), "");
     84 
     85     static_assert((std::is_same<
     86         std::scoped_allocator_adaptor<A2<int>, A1<int>>::pointer,
     87         int*>::value), "");
     88 
     89     static_assert((std::is_same<
     90         std::scoped_allocator_adaptor<A2<int>, A1<int>>::const_pointer,
     91         const int*>::value), "");
     92 
     93     static_assert((std::is_same<
     94         std::scoped_allocator_adaptor<A2<int>, A1<int>>::void_pointer,
     95         void*>::value), "");
     96 
     97     static_assert((std::is_same<
     98         std::scoped_allocator_adaptor<A2<int>, A1<int>>::const_void_pointer,
     99         const void*>::value), "");
    100 
    101 #endif  // _LIBCPP_HAS_NO_RVALUE_REFERENCES
    102 }
    103