//===----------------------------------------------------------------------===// // // 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 // //===----------------------------------------------------------------------===// // // template // struct allocator_traits // { // static pointer allocate(allocator_type& a, size_type n); // ... // }; #include #include #include #include "test_macros.h" #include "incomplete_type_helper.h" template struct A { typedef T value_type; value_type* allocate(std::size_t n) { assert(n == 10); return reinterpret_cast(static_cast(0xDEADBEEF)); } }; int main(int, char**) { { A a; assert(std::allocator_traits >::allocate(a, 10) == reinterpret_cast(static_cast(0xDEADBEEF))); } { typedef IncompleteHolder* VT; typedef A Alloc; Alloc a; assert(std::allocator_traits::allocate(a, 10) == reinterpret_cast(static_cast(0xDEADBEEF))); } return 0; }