//===----------------------------------------------------------------------===// // // 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 // Some fields in the test case variables are deliberately not explicitly initialized, this silences a warning on GCC. // ADDITIONAL_COMPILE_FLAGS(gcc-style-warnings): -Wno-missing-field-initializers // // template R> // void insert_range(R&& rg); // C++23 #include #include "../../../insert_range_maps_sets.h" #include "test_macros.h" int main(int, char**) { // Note: we want to use a pair with non-const elements for input (an assignable type is a lot more convenient) but // have to use the exact `value_type` of the map (that is, `pair`) for the allocator. using Pair = std::pair; using ConstPair = std::pair; for_all_iterators_and_allocators([]() { test_map_set_insert_range, Alloc>, Pair, Iter, Sent>(/*allow_duplicates=*/true); }); static_assert(test_map_constraints_insert_range()); test_map_insert_range_move_only(); test_map_insert_range_exception_safety_throwing_copy(); test_assoc_map_insert_range_exception_safety_throwing_allocator(); return 0; }