//===----------------------------------------------------------------------===// // // 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, c++11, c++14 // // template // scoped_allocator_adaptor(_OuterAlloc, _InnerAllocs...) // -> scoped_allocator_adaptor<_OuterAlloc, _InnerAllocs...>; #include #include "test_macros.h" #include "allocators.h" int main(int, char**) { // Deduct from (const OuterAlloc&). { typedef A1 OuterAlloc; OuterAlloc outer(3); std::scoped_allocator_adaptor a(outer); ASSERT_SAME_TYPE(decltype(a), std::scoped_allocator_adaptor); } // Deduct from (OuterAlloc&&). { typedef A1 OuterAlloc; std::scoped_allocator_adaptor a(OuterAlloc(3)); ASSERT_SAME_TYPE(decltype(a), std::scoped_allocator_adaptor); } // Deduct from (const OuterAlloc&, const InnerAlloc&). { typedef A1 OuterAlloc; typedef A2 InnerAlloc; OuterAlloc outer(3); InnerAlloc inner(4); std::scoped_allocator_adaptor a(outer, inner); ASSERT_SAME_TYPE(decltype(a), std::scoped_allocator_adaptor); } // Deduct from (const OuterAlloc&, const InnerAlloc1&, InnerAlloc2&&). { typedef A1 OuterAlloc; typedef A2 InnerAlloc1; typedef A2 InnerAlloc2; OuterAlloc outer(3); InnerAlloc1 inner(4); std::scoped_allocator_adaptor a(outer, inner, InnerAlloc2(5)); ASSERT_SAME_TYPE( decltype(a), std::scoped_allocator_adaptor); } return 0; }