//===----------------------------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // UNSUPPORTED: c++03 #include #include #include #include "test_macros.h" // // // 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; ((void)vp); // Prevent unused warning ((void)cvp); // Prevent unused warning 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; ((void)vp); // Prevent unused warning ((void)cvp); // Prevent unused warning 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(int, char**) { test_pointer> (); test_pointer> (); test_pointer> (); test_void_pointer> (); test_void_pointer> (); test_void_pointer> (); return 0; }