//===----------------------------------------------------------------------===// // // 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. // //===----------------------------------------------------------------------===// #include #include #if __cplusplus >= 201103L // #include // // template // struct allocator_traits // { // typedef Alloc allocator_type; // typedef typename allocator_type::value_type // value_type; // // typedef Alloc::pointer | value_type* pointer; // typedef Alloc::const_pointer // | pointer_traits::rebind // const_pointer; // typedef Alloc::void_pointer // | pointer_traits::rebind // void_pointer; // typedef Alloc::const_void_pointer // | pointer_traits::rebind // const_void_pointer; template void test_pointer() { typename std::allocator_traits::pointer vp; typename std::allocator_traits::const_pointer cvp; static_assert(std::is_same::value, ""); static_assert(std::is_same::value, ""); static_assert(std::is_same vp)>::value, ""); static_assert(std::is_same= vp)>::value, ""); static_assert(std::is_same::value, ""); static_assert(std::is_same::value, ""); static_assert(std::is_same::value, ""); static_assert(std::is_same::value, ""); static_assert(std::is_same::value, ""); static_assert(std::is_same::value, ""); static_assert(std::is_same cvp)>::value, ""); static_assert(std::is_same vp)>::value, ""); static_assert(std::is_same= cvp)>::value, ""); static_assert(std::is_same= vp)>::value, ""); static_assert(std::is_same::value, ""); static_assert(std::is_same::value, ""); static_assert(std::is_same::value, ""); static_assert(std::is_same::value, ""); static_assert(std::is_same::value, ""); static_assert(std::is_same::value, ""); static_assert(std::is_same cvp)>::value, ""); static_assert(std::is_same= cvp)>::value, ""); static_assert(std::is_same::value, ""); static_assert(std::is_same::value, ""); } template void test_void_pointer() { typename std::allocator_traits::void_pointer vp; typename std::allocator_traits::const_void_pointer cvp; static_assert(std::is_same::value, ""); static_assert(std::is_same::value, ""); static_assert(std::is_same vp)>::value, ""); static_assert(std::is_same= vp)>::value, ""); static_assert(std::is_same::value, ""); static_assert(std::is_same::value, ""); static_assert(std::is_same::value, ""); static_assert(std::is_same::value, ""); static_assert(std::is_same::value, ""); static_assert(std::is_same::value, ""); static_assert(std::is_same cvp)>::value, ""); static_assert(std::is_same vp)>::value, ""); static_assert(std::is_same= cvp)>::value, ""); static_assert(std::is_same= vp)>::value, ""); static_assert(std::is_same::value, ""); static_assert(std::is_same::value, ""); static_assert(std::is_same::value, ""); static_assert(std::is_same::value, ""); static_assert(std::is_same::value, ""); static_assert(std::is_same::value, ""); static_assert(std::is_same cvp)>::value, ""); static_assert(std::is_same= cvp)>::value, ""); static_assert(std::is_same::value, ""); static_assert(std::is_same::value, ""); } struct Foo { int x; }; int main() { test_pointer> (); test_pointer> (); test_pointer> (); test_void_pointer> (); test_void_pointer> (); test_void_pointer> (); } #else int main() {} #endif