//===----------------------------------------------------------------------===// // // The LLVM Compiler Infrastructure // // This file is dual licensed under the MIT and the University of Illinois Open // Source Licenses. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // template // class scoped_allocator_adaptor // typedef see below is_always_equal; #include #include #include "allocators.h" #include "min_allocator.h" int main() { #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES // sanity checks static_assert( (std::is_same< std::allocator_traits>::is_always_equal, std::false_type>::value ), "" ); static_assert( (std::is_same< std::allocator_traits>::is_always_equal, std::true_type>::value ), "" ); // wrapping one allocator static_assert( (std::is_same< std::scoped_allocator_adaptor>::is_always_equal, std::allocator_traits>::is_always_equal >::value), ""); // wrapping one allocator static_assert( (std::is_same< std::scoped_allocator_adaptor>::is_always_equal, std::allocator_traits>::is_always_equal >::value), ""); // wrapping two allocators (check the values instead of the types) static_assert(( std::scoped_allocator_adaptor, A2>::is_always_equal::value == ( std::allocator_traits>::is_always_equal::value && std::allocator_traits>::is_always_equal::value) ), ""); // wrapping two allocators (check the values instead of the types) static_assert(( std::scoped_allocator_adaptor, min_allocator>::is_always_equal::value == ( std::allocator_traits>::is_always_equal::value && std::allocator_traits>::is_always_equal::value) ), ""); // wrapping three allocators (check the values instead of the types) static_assert(( std::scoped_allocator_adaptor, A2, A3>::is_always_equal::value == ( std::allocator_traits>::is_always_equal::value && std::allocator_traits>::is_always_equal::value && std::allocator_traits>::is_always_equal::value) ), ""); #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES }