//===----------------------------------------------------------------------===// // // 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 // // flat_map(const flat_map& m); #include #include #include #include "test_macros.h" #include "../../../test_compare.h" #include "test_allocator.h" int main(int, char**) { { using C = test_less; std::vector> ks({1, 3, 5}, test_allocator(6)); std::vector> vs({2, 2, 1}, test_allocator(7)); using M = std::flat_map; auto mo = M(ks, vs, C(5)); auto m = mo; assert(m.key_comp() == C(5)); assert(m.keys() == ks); assert(m.values() == vs); assert(m.keys().get_allocator() == test_allocator(6)); assert(m.values().get_allocator() == test_allocator(7)); // mo is unchanged assert(mo.key_comp() == C(5)); assert(mo.keys() == ks); assert(mo.values() == vs); assert(mo.keys().get_allocator() == test_allocator(6)); assert(mo.values().get_allocator() == test_allocator(7)); } { using C = test_less; using Ks = std::vector>; using Vs = std::vector>; auto ks = Ks({1, 3, 5}, other_allocator(6)); auto vs = Vs({2, 2, 1}, other_allocator(7)); using M = std::flat_map; auto mo = M(Ks(ks, other_allocator(6)), Vs(vs, other_allocator(7)), C(5)); auto m = mo; assert(m.key_comp() == C(5)); assert(m.keys() == ks); assert(m.values() == vs); assert(m.keys().get_allocator() == other_allocator(-2)); assert(m.values().get_allocator() == other_allocator(-2)); // mo is unchanged assert(mo.key_comp() == C(5)); assert(mo.keys() == ks); assert(mo.values() == vs); assert(mo.keys().get_allocator() == other_allocator(6)); assert(mo.values().get_allocator() == other_allocator(7)); } return 0; }