//===----------------------------------------------------------------------===// // // 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, c++17, c++20 // // template // explicit flat_multimap(const Allocator& a); #include #include #include #include #include "test_macros.h" #include "test_allocator.h" #include "../../../test_compare.h" int main(int, char**) { { // The constructors in this subclause shall not participate in overload // resolution unless uses_allocator_v is true // and uses_allocator_v is true. using C = test_less; using A1 = test_allocator; using A2 = other_allocator; using V1 = std::vector; using V2 = std::vector; using M1 = std::flat_multimap; using M2 = std::flat_multimap; using M3 = std::flat_multimap; static_assert(std::is_constructible_v); static_assert(!std::is_constructible_v); static_assert(!std::is_constructible_v); static_assert(!std::is_constructible_v); } { // explicit using M = std::flat_multimap, std::vector>, std::vector>>; static_assert(std::is_constructible_v>); static_assert(!std::is_convertible_v, M>); } { using A = test_allocator; using M = std::flat_multimap, std::vector>, std::vector>>; M m(A(0, 5)); assert(m.empty()); assert(m.begin() == m.end()); assert(m.keys().get_allocator().get_id() == 5); assert(m.values().get_allocator().get_id() == 5); } return 0; }