diff --git a/include/boost/unordered/unordered_map.hpp b/include/boost/unordered/unordered_map.hpp index f4c052f5..36b17f78 100644 --- a/include/boost/unordered/unordered_map.hpp +++ b/include/boost/unordered/unordered_map.hpp @@ -343,6 +343,13 @@ namespace boost table_.insert_range(first, last); } +#if !defined(BOOST_NO_0X_HDR_INITIALIZER_LIST) + void insert(std::initializer_list list) + { + table_.insert_range(list.begin(), list.end()); + } +#endif + iterator erase(const_iterator position) { return iterator(table_.erase(get(position))); @@ -837,6 +844,13 @@ namespace boost table_.insert_range(first, last); } +#if !defined(BOOST_NO_0X_HDR_INITIALIZER_LIST) + void insert(std::initializer_list list) + { + table_.insert_range(list.begin(), list.end()); + } +#endif + iterator erase(const_iterator position) { return iterator(table_.erase(get(position))); diff --git a/include/boost/unordered/unordered_set.hpp b/include/boost/unordered/unordered_set.hpp index 2b147b28..82446025 100644 --- a/include/boost/unordered/unordered_set.hpp +++ b/include/boost/unordered/unordered_set.hpp @@ -337,6 +337,13 @@ namespace boost table_.insert_range(first, last); } +#if !defined(BOOST_NO_0X_HDR_INITIALIZER_LIST) + void insert(std::initializer_list list) + { + table_.insert_range(list.begin(), list.end()); + } +#endif + iterator erase(const_iterator position) { return iterator(table_.erase(get(position))); @@ -793,6 +800,13 @@ namespace boost table_.insert_range(first, last); } +#if !defined(BOOST_NO_0X_HDR_INITIALIZER_LIST) + void insert(std::initializer_list list) + { + table_.insert_range(list.begin(), list.end()); + } +#endif + iterator erase(const_iterator position) { return iterator(table_.erase(get(position))); diff --git a/test/unordered/insert_tests.cpp b/test/unordered/insert_tests.cpp index 6a4f4d86..30f6d28d 100644 --- a/test/unordered/insert_tests.cpp +++ b/test/unordered/insert_tests.cpp @@ -372,6 +372,54 @@ UNORDERED_TEST(associative_insert_range_test, ((default_generator)(generate_collisions)) ) +#if !defined(BOOST_NO_0X_HDR_INITIALIZER_LIST) + +UNORDERED_AUTO_TEST(insert_initializer_list_set) +{ + boost::unordered_set set; + set.insert({1,2,3,1}); + BOOST_TEST_EQ(set.size(), 3u); + BOOST_TEST(set.find(1) != set.end()); + BOOST_TEST(set.find(4) == set.end()); +} + +UNORDERED_AUTO_TEST(insert_initializer_list_multiset) +{ + boost::unordered_multiset multiset; + multiset.insert({}); + BOOST_TEST(multiset.empty()); + multiset.insert({"a"}); + BOOST_TEST_EQ(multiset.size(), 1u); + BOOST_TEST(multiset.find("a") != multiset.end()); + BOOST_TEST(multiset.find("b") == multiset.end()); + multiset.insert({"a","b"}); + BOOST_TEST(multiset.size() == 3); + BOOST_TEST_EQ(multiset.count("a"), 2u); + BOOST_TEST_EQ(multiset.count("b"), 1u); + BOOST_TEST_EQ(multiset.count("c"), 0u); +} + +UNORDERED_AUTO_TEST(insert_initializer_list_map) +{ + boost::unordered_map map; + map.insert({}); + BOOST_TEST(map.empty()); + map.insert({{"a", "b"},{"a", "b"},{"d", ""}}); + BOOST_TEST_EQ(map.size(), 2u); +} + +UNORDERED_AUTO_TEST(insert_initializer_list_multimap) +{ + boost::unordered_multimap multimap; + multimap.insert({}); + BOOST_TEST(multimap.empty()); + multimap.insert({{"a", "b"},{"a", "b"},{"d", ""}}); + BOOST_TEST_EQ(multimap.size(), 3u); + BOOST_TEST_EQ(multimap.count("a"), 2u); +} + +#endif + } RUN_TESTS()