diff options
10 files changed, 293 insertions, 405 deletions
diff --git a/libcxx/test/std/containers/associative/multiset/insert_cv.pass.cpp b/libcxx/test/std/containers/associative/multiset/insert_cv.pass.cpp index 2aa920d7097..fe756428223 100644 --- a/libcxx/test/std/containers/associative/multiset/insert_cv.pass.cpp +++ b/libcxx/test/std/containers/associative/multiset/insert_cv.pass.cpp @@ -18,56 +18,44 @@ #include "min_allocator.h" -int main() +template<class Container> +void do_insert_cv_test() { - { - typedef std::multiset<int> M; - typedef M::iterator R; - M m; - R r = m.insert(M::value_type(2)); - assert(r == m.begin()); - assert(m.size() == 1); - assert(*r == 2); - - r = m.insert(M::value_type(1)); - assert(r == m.begin()); - assert(m.size() == 2); - assert(*r == 1); - - r = m.insert(M::value_type(3)); - assert(r == prev(m.end())); - assert(m.size() == 3); - assert(*r == 3); + typedef Container M; + typedef typename M::iterator R; + typedef typename M::value_type VT; + M m; + const VT v1(2); + R r = m.insert(v1); + assert(r == m.begin()); + assert(m.size() == 1); + assert(*r == 2); + + const VT v2(1); + r = m.insert(v2); + assert(r == m.begin()); + assert(m.size() == 2); + assert(*r == 1); + + const VT v3(3); + r = m.insert(v3); + assert(r == prev(m.end())); + assert(m.size() == 3); + assert(*r == 3); + + r = m.insert(v3); + assert(r == prev(m.end())); + assert(m.size() == 4); + assert(*r == 3); +} - r = m.insert(M::value_type(3)); - assert(r == prev(m.end())); - assert(m.size() == 4); - assert(*r == 3); - } +int main() +{ + do_insert_cv_test<std::multiset<int> >(); #if TEST_STD_VER >= 11 { typedef std::multiset<int, std::less<int>, min_allocator<int>> M; - typedef M::iterator R; - M m; - R r = m.insert(M::value_type(2)); - assert(r == m.begin()); - assert(m.size() == 1); - assert(*r == 2); - - r = m.insert(M::value_type(1)); - assert(r == m.begin()); - assert(m.size() == 2); - assert(*r == 1); - - r = m.insert(M::value_type(3)); - assert(r == prev(m.end())); - assert(m.size() == 3); - assert(*r == 3); - - r = m.insert(M::value_type(3)); - assert(r == prev(m.end())); - assert(m.size() == 4); - assert(*r == 3); + do_insert_cv_test<M>(); } #endif } diff --git a/libcxx/test/std/containers/associative/set/insert_cv.pass.cpp b/libcxx/test/std/containers/associative/set/insert_cv.pass.cpp index 8d5290a97af..17d3c26237c 100644 --- a/libcxx/test/std/containers/associative/set/insert_cv.pass.cpp +++ b/libcxx/test/std/containers/associative/set/insert_cv.pass.cpp @@ -18,64 +18,49 @@ #include "min_allocator.h" -int main() +template<class Container> +void do_insert_cv_test() { - { - typedef std::set<int> M; - typedef std::pair<M::iterator, bool> R; - M m; - R r = m.insert(M::value_type(2)); - assert(r.second); - assert(r.first == m.begin()); - assert(m.size() == 1); - assert(*r.first == 2); + typedef Container M; + typedef std::pair<typename M::iterator, bool> R; + typedef typename M::value_type VT; + M m; - r = m.insert(M::value_type(1)); - assert(r.second); - assert(r.first == m.begin()); - assert(m.size() == 2); - assert(*r.first == 1); + const VT v1(2); + R r = m.insert(v1); + assert(r.second); + assert(r.first == m.begin()); + assert(m.size() == 1); + assert(*r.first == 2); - r = m.insert(M::value_type(3)); - assert(r.second); - assert(r.first == prev(m.end())); - assert(m.size() == 3); - assert(*r.first == 3); + const VT v2(1); + r = m.insert(v2); + assert(r.second); + assert(r.first == m.begin()); + assert(m.size() == 2); + assert(*r.first == 1); - r = m.insert(M::value_type(3)); - assert(!r.second); - assert(r.first == prev(m.end())); - assert(m.size() == 3); - assert(*r.first == 3); - } + const VT v3(3); + r = m.insert(v3); + assert(r.second); + assert(r.first == prev(m.end())); + assert(m.size() == 3); + assert(*r.first == 3); + + r = m.insert(v3); + assert(!r.second); + assert(r.first == prev(m.end())); + assert(m.size() == 3); + assert(*r.first == 3); +} + +int main() +{ + do_insert_cv_test<std::set<int> >(); #if TEST_STD_VER >= 11 { typedef std::set<int, std::less<int>, min_allocator<int>> M; - typedef std::pair<M::iterator, bool> R; - M m; - R r = m.insert(M::value_type(2)); - assert(r.second); - assert(r.first == m.begin()); - assert(m.size() == 1); - assert(*r.first == 2); - - r = m.insert(M::value_type(1)); - assert(r.second); - assert(r.first == m.begin()); - assert(m.size() == 2); - assert(*r.first == 1); - - r = m.insert(M::value_type(3)); - assert(r.second); - assert(r.first == prev(m.end())); - assert(m.size() == 3); - assert(*r.first == 3); - - r = m.insert(M::value_type(3)); - assert(!r.second); - assert(r.first == prev(m.end())); - assert(m.size() == 3); - assert(*r.first == 3); + do_insert_cv_test<M>(); } #endif } diff --git a/libcxx/test/std/containers/unord/unord.map/unord.map.modifiers/insert_const_lvalue.pass.cpp b/libcxx/test/std/containers/unord/unord.map/unord.map.modifiers/insert_const_lvalue.pass.cpp index fe2b24707fb..a191ad7036c 100644 --- a/libcxx/test/std/containers/unord/unord.map/unord.map.modifiers/insert_const_lvalue.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.map/unord.map.modifiers/insert_const_lvalue.pass.cpp @@ -37,28 +37,29 @@ void do_insert_cv_test() assert(r.first->first == 2.5); assert(r.first->second == 2); - r = m.insert(VT(2.5, 3)); // test rvalue insertion works in C++03 + const VT v2(2.5, 3); + r = m.insert(v2); assert(!r.second); assert(m.size() == 1); assert(r.first->first == 2.5); assert(r.first->second == 2); - const VT v2(1.5, 1); - r = m.insert(v2); + const VT v3(1.5, 1); + r = m.insert(v3); assert(r.second); assert(m.size() == 2); assert(r.first->first == 1.5); assert(r.first->second == 1); - const VT v3(3.5, 3); - r = m.insert(v3); + const VT v4(3.5, 3); + r = m.insert(v4); assert(r.second); assert(m.size() == 3); assert(r.first->first == 3.5); assert(r.first->second == 3); - const VT v4(3.5, 4); - r = m.insert(v4); + const VT v5(3.5, 4); + r = m.insert(v5); assert(!r.second); assert(m.size() == 3); assert(r.first->first == 3.5); diff --git a/libcxx/test/std/containers/unord/unord.map/unord.map.modifiers/insert_hint_const_lvalue.pass.cpp b/libcxx/test/std/containers/unord/unord.map/unord.map.modifiers/insert_hint_const_lvalue.pass.cpp index d40a8a61a3d..5c653ee8fb3 100644 --- a/libcxx/test/std/containers/unord/unord.map/unord.map.modifiers/insert_hint_const_lvalue.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.map/unord.map.modifiers/insert_hint_const_lvalue.pass.cpp @@ -24,61 +24,48 @@ #include "min_allocator.h" -int main() +template<class Container> +void do_insert_hint_const_lvalue_test() { - { - typedef std::unordered_map<double, int> C; - typedef C::iterator R; - typedef C::value_type P; - C c; - C::const_iterator e = c.end(); - R r = c.insert(e, P(3.5, 3)); - assert(c.size() == 1); - assert(r->first == 3.5); - assert(r->second == 3); + typedef Container C; + typedef typename C::iterator R; + typedef typename C::value_type VT; + C c; + typename C::const_iterator e = c.end(); + const VT v1(3.5, 3); + R r = c.insert(e, v1); + assert(c.size() == 1); + assert(r->first == 3.5); + assert(r->second == 3); - r = c.insert(c.end(), P(3.5, 4)); - assert(c.size() == 1); - assert(r->first == 3.5); - assert(r->second == 3); + const VT v2(3.5, 4); + r = c.insert(c.end(), v2); + assert(c.size() == 1); + assert(r->first == 3.5); + assert(r->second == 3); - r = c.insert(c.end(), P(4.5, 4)); - assert(c.size() == 2); - assert(r->first == 4.5); - assert(r->second == 4); + const VT v3(4.5, 4); + r = c.insert(c.end(), v3); + assert(c.size() == 2); + assert(r->first == 4.5); + assert(r->second == 4); - r = c.insert(c.end(), P(5.5, 4)); - assert(c.size() == 3); - assert(r->first == 5.5); - assert(r->second == 4); - } + const VT v4(5.5, 4); + r = c.insert(c.end(), v4); + assert(c.size() == 3); + assert(r->first == 5.5); + assert(r->second == 4); +} + +int main() +{ + do_insert_hint_const_lvalue_test<std::unordered_map<double, int> >(); #if TEST_STD_VER >= 11 { typedef std::unordered_map<double, int, std::hash<double>, std::equal_to<double>, min_allocator<std::pair<const double, int>>> C; - typedef C::iterator R; - typedef C::value_type P; - C c; - C::const_iterator e = c.end(); - R r = c.insert(e, P(3.5, 3)); - assert(c.size() == 1); - assert(r->first == 3.5); - assert(r->second == 3); - - r = c.insert(c.end(), P(3.5, 4)); - assert(c.size() == 1); - assert(r->first == 3.5); - assert(r->second == 3); - - r = c.insert(c.end(), P(4.5, 4)); - assert(c.size() == 2); - assert(r->first == 4.5); - assert(r->second == 4); - r = c.insert(c.end(), P(5.5, 4)); - assert(c.size() == 3); - assert(r->first == 5.5); - assert(r->second == 4); + do_insert_hint_const_lvalue_test<C>(); } #endif #if _LIBCPP_DEBUG >= 1 diff --git a/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/insert_const_lvalue.pass.cpp b/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/insert_const_lvalue.pass.cpp index 320fbc8fe2e..b87b7e372ff 100644 --- a/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/insert_const_lvalue.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/insert_const_lvalue.pass.cpp @@ -20,59 +20,46 @@ #include "min_allocator.h" -int main() +template<class Container> +void do_insert_const_lvalue_test() { - { - typedef std::unordered_multimap<double, int> C; - typedef C::iterator R; - typedef C::value_type P; - C c; - R r = c.insert(P(3.5, 3)); - assert(c.size() == 1); - assert(r->first == 3.5); - assert(r->second == 3); + typedef Container C; + typedef typename C::iterator R; + typedef typename C::value_type VT; + C c; + const VT v1(3.5, 3); + R r = c.insert(v1); + assert(c.size() == 1); + assert(r->first == 3.5); + assert(r->second == 3); - r = c.insert(P(3.5, 4)); - assert(c.size() == 2); - assert(r->first == 3.5); - assert(r->second == 4); + const VT v2(3.5, 4); + r = c.insert(v2); + assert(c.size() == 2); + assert(r->first == 3.5); + assert(r->second == 4); - r = c.insert(P(4.5, 4)); - assert(c.size() == 3); - assert(r->first == 4.5); - assert(r->second == 4); + const VT v3(4.5, 4); + r = c.insert(v3); + assert(c.size() == 3); + assert(r->first == 4.5); + assert(r->second == 4); - r = c.insert(P(5.5, 4)); - assert(c.size() == 4); - assert(r->first == 5.5); - assert(r->second == 4); - } + const VT v4(5.5, 4); + r = c.insert(v4); + assert(c.size() == 4); + assert(r->first == 5.5); + assert(r->second == 4); +} + +int main() +{ + do_insert_const_lvalue_test<std::unordered_multimap<double, int> >(); #if TEST_STD_VER >= 11 { typedef std::unordered_multimap<double, int, std::hash<double>, std::equal_to<double>, min_allocator<std::pair<const double, int>>> C; - typedef C::iterator R; - typedef C::value_type P; - C c; - R r = c.insert(P(3.5, 3)); - assert(c.size() == 1); - assert(r->first == 3.5); - assert(r->second == 3); - - r = c.insert(P(3.5, 4)); - assert(c.size() == 2); - assert(r->first == 3.5); - assert(r->second == 4); - - r = c.insert(P(4.5, 4)); - assert(c.size() == 3); - assert(r->first == 4.5); - assert(r->second == 4); - - r = c.insert(P(5.5, 4)); - assert(c.size() == 4); - assert(r->first == 5.5); - assert(r->second == 4); + do_insert_const_lvalue_test<C>(); } #endif } diff --git a/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/insert_hint_const_lvalue.pass.cpp b/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/insert_hint_const_lvalue.pass.cpp index c920ae93553..34cb1b293c8 100644 --- a/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/insert_hint_const_lvalue.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/insert_hint_const_lvalue.pass.cpp @@ -24,61 +24,47 @@ #include "min_allocator.h" -int main() +template<class Container> +void do_insert_const_lvalue_test() { - { - typedef std::unordered_multimap<double, int> C; - typedef C::iterator R; - typedef C::value_type P; - C c; - C::const_iterator e = c.end(); - R r = c.insert(e, P(3.5, 3)); - assert(c.size() == 1); - assert(r->first == 3.5); - assert(r->second == 3); + typedef Container C; + typedef typename C::iterator R; + typedef typename C::value_type VT; + C c; + typename C::const_iterator e = c.end(); + const VT v1(3.5, 3); + R r = c.insert(e, v1); + assert(c.size() == 1); + assert(r->first == 3.5); + assert(r->second == 3); - r = c.insert(c.end(), P(3.5, 4)); - assert(c.size() == 2); - assert(r->first == 3.5); - assert(r->second == 4); + const VT v2(3.5, 4); + r = c.insert(c.end(), v2); + assert(c.size() == 2); + assert(r->first == 3.5); + assert(r->second == 4); - r = c.insert(c.end(), P(4.5, 4)); - assert(c.size() == 3); - assert(r->first == 4.5); - assert(r->second == 4); + const VT v3(4.5, 4); + r = c.insert(c.end(), v3); + assert(c.size() == 3); + assert(r->first == 4.5); + assert(r->second == 4); - r = c.insert(c.end(), P(5.5, 4)); - assert(c.size() == 4); - assert(r->first == 5.5); - assert(r->second == 4); - } + const VT v4(5.5, 4); + r = c.insert(c.end(), v4); + assert(c.size() == 4); + assert(r->first == 5.5); + assert(r->second == 4); +} + +int main() +{ + do_insert_const_lvalue_test<std::unordered_multimap<double, int> >(); #if TEST_STD_VER >= 11 { typedef std::unordered_multimap<double, int, std::hash<double>, std::equal_to<double>, min_allocator<std::pair<const double, int>>> C; - typedef C::iterator R; - typedef C::value_type P; - C c; - C::const_iterator e = c.end(); - R r = c.insert(e, P(3.5, 3)); - assert(c.size() == 1); - assert(r->first == 3.5); - assert(r->second == 3); - - r = c.insert(c.end(), P(3.5, 4)); - assert(c.size() == 2); - assert(r->first == 3.5); - assert(r->second == 4); - - r = c.insert(c.end(), P(4.5, 4)); - assert(c.size() == 3); - assert(r->first == 4.5); - assert(r->second == 4); - - r = c.insert(c.end(), P(5.5, 4)); - assert(c.size() == 4); - assert(r->first == 5.5); - assert(r->second == 4); + do_insert_const_lvalue_test<C>(); } #endif #if _LIBCPP_DEBUG >= 1 diff --git a/libcxx/test/std/containers/unord/unord.multiset/insert_const_lvalue.pass.cpp b/libcxx/test/std/containers/unord/unord.multiset/insert_const_lvalue.pass.cpp index 946858ea53d..414e8fa4878 100644 --- a/libcxx/test/std/containers/unord/unord.multiset/insert_const_lvalue.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.multiset/insert_const_lvalue.pass.cpp @@ -20,51 +20,41 @@ #include "min_allocator.h" -int main() +template<class Container> +void do_insert_const_lvalue_test() { - { - typedef std::unordered_multiset<double> C; - typedef C::iterator R; - typedef C::value_type P; - C c; - R r = c.insert(P(3.5)); - assert(c.size() == 1); - assert(*r == 3.5); - - r = c.insert(P(3.5)); - assert(c.size() == 2); - assert(*r == 3.5); - - r = c.insert(P(4.5)); - assert(c.size() == 3); - assert(*r == 4.5); + typedef Container C; + typedef typename C::iterator R; + typedef typename C::value_type VT; + C c; + const VT v1(3.5); + R r = c.insert(v1); + assert(c.size() == 1); + assert(*r == 3.5); + + r = c.insert(v1); + assert(c.size() == 2); + assert(*r == 3.5); + + const VT v2(4.5); + r = c.insert(v2); + assert(c.size() == 3); + assert(*r == 4.5); + + const VT v3(5.5); + r = c.insert(v3); + assert(c.size() == 4); + assert(*r == 5.5); +} - r = c.insert(P(5.5)); - assert(c.size() == 4); - assert(*r == 5.5); - } +int main() +{ + do_insert_const_lvalue_test<std::unordered_multiset<double> >(); #if TEST_STD_VER >= 11 { typedef std::unordered_multiset<double, std::hash<double>, - std::equal_to<double>, min_allocator<double>> C; - typedef C::iterator R; - typedef C::value_type P; - C c; - R r = c.insert(P(3.5)); - assert(c.size() == 1); - assert(*r == 3.5); - - r = c.insert(P(3.5)); - assert(c.size() == 2); - assert(*r == 3.5); - - r = c.insert(P(4.5)); - assert(c.size() == 3); - assert(*r == 4.5); - - r = c.insert(P(5.5)); - assert(c.size() == 4); - assert(*r == 5.5); + std::equal_to<double>, min_allocator<double>> C; + do_insert_const_lvalue_test<C>(); } #endif } diff --git a/libcxx/test/std/containers/unord/unord.multiset/insert_hint_const_lvalue.pass.cpp b/libcxx/test/std/containers/unord/unord.multiset/insert_hint_const_lvalue.pass.cpp index a6ab26659b5..8ce6a5efbc1 100644 --- a/libcxx/test/std/containers/unord/unord.multiset/insert_hint_const_lvalue.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.multiset/insert_hint_const_lvalue.pass.cpp @@ -24,53 +24,42 @@ #include "min_allocator.h" -int main() +template<class Container> +void do_insert_hint_const_lvalue_test() { - { - typedef std::unordered_multiset<double> C; - typedef C::iterator R; - typedef C::value_type P; - C c; - C::const_iterator e = c.end(); - R r = c.insert(e, P(3.5)); - assert(c.size() == 1); - assert(*r == 3.5); + typedef Container C; + typedef typename C::iterator R; + typedef typename C::value_type VT; + C c; + typename C::const_iterator e = c.end(); + const VT v1(3.5); + R r = c.insert(e, v1); + assert(c.size() == 1); + assert(*r == 3.5); - r = c.insert(c.end(), P(3.5)); - assert(c.size() == 2); - assert(*r == 3.5); + r = c.insert(c.end(), v1); + assert(c.size() == 2); + assert(*r == 3.5); - r = c.insert(c.end(), P(4.5)); - assert(c.size() == 3); - assert(*r == 4.5); + const VT v2(4.5); + r = c.insert(c.end(), v2); + assert(c.size() == 3); + assert(*r == 4.5); - r = c.insert(c.end(), P(5.5)); - assert(c.size() == 4); - assert(*r == 5.5); - } + const VT v3(5.5); + r = c.insert(c.end(), v3); + assert(c.size() == 4); + assert(*r == 5.5); +} + +int main() +{ + do_insert_hint_const_lvalue_test<std::unordered_multiset<double> >(); #if TEST_STD_VER >= 11 { typedef std::unordered_multiset<double, std::hash<double>, - std::equal_to<double>, min_allocator<double>> C; - typedef C::iterator R; - typedef C::value_type P; - C c; - C::const_iterator e = c.end(); - R r = c.insert(e, P(3.5)); - assert(c.size() == 1); - assert(*r == 3.5); - - r = c.insert(c.end(), P(3.5)); - assert(c.size() == 2); - assert(*r == 3.5); - - r = c.insert(c.end(), P(4.5)); - assert(c.size() == 3); - assert(*r == 4.5); - - r = c.insert(c.end(), P(5.5)); - assert(c.size() == 4); - assert(*r == 5.5); + std::equal_to<double>, min_allocator<double>> C; + do_insert_hint_const_lvalue_test<C>(); } #endif #if _LIBCPP_DEBUG >= 1 diff --git a/libcxx/test/std/containers/unord/unord.set/insert_const_lvalue.pass.cpp b/libcxx/test/std/containers/unord/unord.set/insert_const_lvalue.pass.cpp index fe45b98a33a..712176ede59 100644 --- a/libcxx/test/std/containers/unord/unord.set/insert_const_lvalue.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.set/insert_const_lvalue.pass.cpp @@ -20,59 +20,45 @@ #include "min_allocator.h" -int main() +template<class Container> +void do_insert_const_lvalue_test() { - { - typedef std::unordered_set<double> C; - typedef std::pair<C::iterator, bool> R; - typedef C::value_type P; - C c; - R r = c.insert(P(3.5)); - assert(c.size() == 1); - assert(*r.first == 3.5); - assert(r.second); + typedef Container C; + typedef std::pair<typename C::iterator, bool> R; + typedef typename C::value_type VT; + C c; + const VT v1(3.5); + R r = c.insert(v1); + assert(c.size() == 1); + assert(*r.first == 3.5); + assert(r.second); - r = c.insert(P(3.5)); - assert(c.size() == 1); - assert(*r.first == 3.5); - assert(!r.second); + r = c.insert(v1); + assert(c.size() == 1); + assert(*r.first == 3.5); + assert(!r.second); - r = c.insert(P(4.5)); - assert(c.size() == 2); - assert(*r.first == 4.5); - assert(r.second); + const VT v2(4.5); + r = c.insert(v2); + assert(c.size() == 2); + assert(*r.first == 4.5); + assert(r.second); - r = c.insert(P(5.5)); - assert(c.size() == 3); - assert(*r.first == 5.5); - assert(r.second); - } + const VT v3(5.5); + r = c.insert(v3); + assert(c.size() == 3); + assert(*r.first == 5.5); + assert(r.second); +} + +int main() +{ + do_insert_const_lvalue_test<std::unordered_set<double> >(); #if TEST_STD_VER >= 11 { typedef std::unordered_set<double, std::hash<double>, std::equal_to<double>, min_allocator<double>> C; - typedef std::pair<C::iterator, bool> R; - typedef C::value_type P; - C c; - R r = c.insert(P(3.5)); - assert(c.size() == 1); - assert(*r.first == 3.5); - assert(r.second); - - r = c.insert(P(3.5)); - assert(c.size() == 1); - assert(*r.first == 3.5); - assert(!r.second); - - r = c.insert(P(4.5)); - assert(c.size() == 2); - assert(*r.first == 4.5); - assert(r.second); - - r = c.insert(P(5.5)); - assert(c.size() == 3); - assert(*r.first == 5.5); - assert(r.second); + do_insert_const_lvalue_test<C>(); } #endif } diff --git a/libcxx/test/std/containers/unord/unord.set/insert_hint_const_lvalue.pass.cpp b/libcxx/test/std/containers/unord/unord.set/insert_hint_const_lvalue.pass.cpp index d3bbecc95ad..50f0f6bc847 100644 --- a/libcxx/test/std/containers/unord/unord.set/insert_hint_const_lvalue.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.set/insert_hint_const_lvalue.pass.cpp @@ -24,53 +24,42 @@ #include "min_allocator.h" -int main() +template<class Container> +void do_insert_hint_const_lvalue_test() { - { - typedef std::unordered_set<double> C; - typedef C::iterator R; - typedef C::value_type P; - C c; - C::const_iterator e = c.end(); - R r = c.insert(e, P(3.5)); - assert(c.size() == 1); - assert(*r == 3.5); + typedef Container C; + typedef typename C::iterator R; + typedef typename C::value_type VT; + C c; + typename C::const_iterator e = c.end(); + const VT v1(3.5); + R r = c.insert(e, v1); + assert(c.size() == 1); + assert(*r == 3.5); - r = c.insert(e, P(3.5)); - assert(c.size() == 1); - assert(*r == 3.5); + r = c.insert(e, v1); + assert(c.size() == 1); + assert(*r == 3.5); - r = c.insert(e, P(4.5)); - assert(c.size() == 2); - assert(*r == 4.5); + const VT v2(4.5); + r = c.insert(e, v2); + assert(c.size() == 2); + assert(*r == 4.5); - r = c.insert(e, P(5.5)); - assert(c.size() == 3); - assert(*r == 5.5); - } + const VT v3(5.5); + r = c.insert(e, v3); + assert(c.size() == 3); + assert(*r == 5.5); +} + +int main() +{ + do_insert_hint_const_lvalue_test<std::unordered_set<double> >(); #if TEST_STD_VER >= 11 { typedef std::unordered_set<double, std::hash<double>, std::equal_to<double>, min_allocator<double>> C; - typedef C::iterator R; - typedef C::value_type P; - C c; - C::const_iterator e = c.end(); - R r = c.insert(e, P(3.5)); - assert(c.size() == 1); - assert(*r == 3.5); - - r = c.insert(e, P(3.5)); - assert(c.size() == 1); - assert(*r == 3.5); - - r = c.insert(e, P(4.5)); - assert(c.size() == 2); - assert(*r == 4.5); - - r = c.insert(e, P(5.5)); - assert(c.size() == 3); - assert(*r == 5.5); + do_insert_hint_const_lvalue_test<C>(); } #endif #if _LIBCPP_DEBUG >= 1 |