1 /* 2 Copyright 2020 Glen Joseph Fernandes 3 (glenjofe@gmail.com) 4 5 Distributed under the Boost Software License, Version 1.0. 6 (http://www.boost.org/LICENSE_1_0.txt) 7 */ 8 #include <boost/core/allocator_access.hpp> 9 #include <boost/core/is_same.hpp> 10 #include <boost/core/lightweight_test_trait.hpp> 11 12 template<class T> 13 struct A1 { 14 typedef T value_type; 15 typedef int* pointer; 16 typedef int* void_pointer; 17 template<class U> 18 struct rebind { 19 typedef A1<U> other; 20 }; 21 }; 22 23 #if !defined(BOOST_NO_CXX11_ALLOCATOR) 24 template<class T> 25 struct A2 { 26 typedef T value_type; 27 }; 28 #endif 29 main()30int main() 31 { 32 BOOST_TEST_TRAIT_TRUE((boost::core::is_same<int*, 33 boost::allocator_void_pointer<A1<char> >::type>)); 34 #if !defined(BOOST_NO_CXX11_ALLOCATOR) 35 BOOST_TEST_TRAIT_TRUE((boost::core::is_same<void*, 36 boost::allocator_void_pointer<A2<int> >::type>)); 37 #endif 38 return boost::report_errors(); 39 } 40