summaryrefslogtreecommitdiffstats
path: root/libcxx/test/containers
diff options
context:
space:
mode:
authorHoward Hinnant <hhinnant@apple.com>2012-05-25 22:04:21 +0000
committerHoward Hinnant <hhinnant@apple.com>2012-05-25 22:04:21 +0000
commit8b805c915a3847e72b6bb028e9fb3af1b17349df (patch)
treeeca09a65e87c1a27efd6e8acc9ec951dcfe2d3b4 /libcxx/test/containers
parent7b29885463742ee73d2585d9d8fd8926d4222f73 (diff)
downloadbcm5719-llvm-8b805c915a3847e72b6bb028e9fb3af1b17349df.tar.gz
bcm5719-llvm-8b805c915a3847e72b6bb028e9fb3af1b17349df.zip
The rules for emplace in map, multimap, unordered_map and unordered_multimap changed a while back and I'm just now updating to these new rules. In a nutshell, you've got to know you're emplacing to a pair and use one of pair's constructors. I made one extension: If you want to emplace the key and default construct the mapped_type, you can just emplace(key), as opposed to emplace(piecewise_construct, forward_as_tuple(key), forward_as_tuple()).
llvm-svn: 157503
Diffstat (limited to 'libcxx/test/containers')
-rw-r--r--libcxx/test/containers/associative/map/map.cons/default_recursive.pass.cpp4
-rw-r--r--libcxx/test/containers/associative/map/map.modifiers/emplace.pass.cpp7
-rw-r--r--libcxx/test/containers/associative/map/map.modifiers/emplace_hint.pass.cpp8
-rw-r--r--libcxx/test/containers/associative/multimap/multimap.modifiers/emplace.pass.cpp6
-rw-r--r--libcxx/test/containers/associative/multimap/multimap.modifiers/emplace_hint.pass.cpp8
-rw-r--r--libcxx/test/containers/unord/unord.map/unorder.map.modifiers/emplace.pass.cpp3
-rw-r--r--libcxx/test/containers/unord/unord.map/unorder.map.modifiers/emplace_hint.pass.cpp3
-rw-r--r--libcxx/test/containers/unord/unord.multimap/unord.multimap.modifiers/emplace.pass.cpp3
-rw-r--r--libcxx/test/containers/unord/unord.multimap/unord.multimap.modifiers/emplace_hint.pass.cpp3
9 files changed, 33 insertions, 12 deletions
diff --git a/libcxx/test/containers/associative/map/map.cons/default_recursive.pass.cpp b/libcxx/test/containers/associative/map/map.cons/default_recursive.pass.cpp
index 5dab7a6faeb..452746c87bb 100644
--- a/libcxx/test/containers/associative/map/map.cons/default_recursive.pass.cpp
+++ b/libcxx/test/containers/associative/map/map.cons/default_recursive.pass.cpp
@@ -15,11 +15,15 @@
#include <map>
+#if !__has_feature(cxx_noexcept)
+
struct X
{
std::multimap<int, X> m;
};
+#endif
+
int main()
{
}
diff --git a/libcxx/test/containers/associative/map/map.modifiers/emplace.pass.cpp b/libcxx/test/containers/associative/map/map.modifiers/emplace.pass.cpp
index e6380c77128..4eb7e9f832a 100644
--- a/libcxx/test/containers/associative/map/map.modifiers/emplace.pass.cpp
+++ b/libcxx/test/containers/associative/map/map.modifiers/emplace.pass.cpp
@@ -16,6 +16,7 @@
#include <map>
#include <cassert>
+#include <tuple>
#include "../../../Emplaceable.h"
#include "../../../DefaultOnly.h"
@@ -61,13 +62,15 @@ int main()
assert(m.size() == 1);
assert(m.begin()->first == 2);
assert(m.begin()->second == Emplaceable());
- r = m.emplace(1, 2, 3.5);
+ r = m.emplace(std::piecewise_construct, std::forward_as_tuple(1),
+ std::forward_as_tuple(2, 3.5));
assert(r.second);
assert(r.first == m.begin());
assert(m.size() == 2);
assert(m.begin()->first == 1);
assert(m.begin()->second == Emplaceable(2, 3.5));
- r = m.emplace(1, 2, 3.5);
+ r = m.emplace(std::piecewise_construct, std::forward_as_tuple(1),
+ std::forward_as_tuple(2, 3.5));
assert(!r.second);
assert(r.first == m.begin());
assert(m.size() == 2);
diff --git a/libcxx/test/containers/associative/map/map.modifiers/emplace_hint.pass.cpp b/libcxx/test/containers/associative/map/map.modifiers/emplace_hint.pass.cpp
index 115dffca48b..2bc225e28a7 100644
--- a/libcxx/test/containers/associative/map/map.modifiers/emplace_hint.pass.cpp
+++ b/libcxx/test/containers/associative/map/map.modifiers/emplace_hint.pass.cpp
@@ -57,12 +57,16 @@ int main()
assert(m.size() == 1);
assert(m.begin()->first == 2);
assert(m.begin()->second == Emplaceable());
- r = m.emplace_hint(m.end(), 1, 2, 3.5);
+ r = m.emplace_hint(m.end(), std::piecewise_construct,
+ std::forward_as_tuple(1),
+ std::forward_as_tuple(2, 3.5));
assert(r == m.begin());
assert(m.size() == 2);
assert(m.begin()->first == 1);
assert(m.begin()->second == Emplaceable(2, 3.5));
- r = m.emplace_hint(m.end(), 1, 2, 3.5);
+ r = m.emplace_hint(m.end(), std::piecewise_construct,
+ std::forward_as_tuple(1),
+ std::forward_as_tuple(2, 3.5));
assert(r == m.begin());
assert(m.size() == 2);
assert(m.begin()->first == 1);
diff --git a/libcxx/test/containers/associative/multimap/multimap.modifiers/emplace.pass.cpp b/libcxx/test/containers/associative/multimap/multimap.modifiers/emplace.pass.cpp
index 07f371a4cac..22406d8fb52 100644
--- a/libcxx/test/containers/associative/multimap/multimap.modifiers/emplace.pass.cpp
+++ b/libcxx/test/containers/associative/multimap/multimap.modifiers/emplace.pass.cpp
@@ -57,12 +57,14 @@ int main()
assert(m.size() == 1);
assert(m.begin()->first == 2);
assert(m.begin()->second == Emplaceable());
- r = m.emplace(1, 2, 3.5);
+ r = m.emplace(std::piecewise_construct, std::forward_as_tuple(1),
+ std::forward_as_tuple(2, 3.5));
assert(r == m.begin());
assert(m.size() == 2);
assert(m.begin()->first == 1);
assert(m.begin()->second == Emplaceable(2, 3.5));
- r = m.emplace(1, 3, 3.5);
+ r = m.emplace(std::piecewise_construct, std::forward_as_tuple(1),
+ std::forward_as_tuple(3, 3.5));
assert(r == next(m.begin()));
assert(m.size() == 3);
assert(r->first == 1);
diff --git a/libcxx/test/containers/associative/multimap/multimap.modifiers/emplace_hint.pass.cpp b/libcxx/test/containers/associative/multimap/multimap.modifiers/emplace_hint.pass.cpp
index 15c9e41229c..4c3e468d594 100644
--- a/libcxx/test/containers/associative/multimap/multimap.modifiers/emplace_hint.pass.cpp
+++ b/libcxx/test/containers/associative/multimap/multimap.modifiers/emplace_hint.pass.cpp
@@ -57,12 +57,16 @@ int main()
assert(m.size() == 1);
assert(m.begin()->first == 2);
assert(m.begin()->second == Emplaceable());
- r = m.emplace_hint(m.cbegin(), 1, 2, 3.5);
+ r = m.emplace_hint(m.cbegin(), std::piecewise_construct,
+ std::forward_as_tuple(1),
+ std::forward_as_tuple(2, 3.5));
assert(r == m.begin());
assert(m.size() == 2);
assert(m.begin()->first == 1);
assert(m.begin()->second == Emplaceable(2, 3.5));
- r = m.emplace_hint(m.cbegin(), 1, 3, 3.5);
+ r = m.emplace_hint(m.cbegin(), std::piecewise_construct,
+ std::forward_as_tuple(1),
+ std::forward_as_tuple(3, 3.5));
assert(r == m.begin());
assert(m.size() == 3);
assert(r->first == 1);
diff --git a/libcxx/test/containers/unord/unord.map/unorder.map.modifiers/emplace.pass.cpp b/libcxx/test/containers/unord/unord.map/unorder.map.modifiers/emplace.pass.cpp
index 66bb05ecdab..488d2ba0053 100644
--- a/libcxx/test/containers/unord/unord.map/unorder.map.modifiers/emplace.pass.cpp
+++ b/libcxx/test/containers/unord/unord.map/unorder.map.modifiers/emplace.pass.cpp
@@ -40,7 +40,8 @@ int main()
assert(r.first->first == 4);
assert(r.first->second == Emplaceable(5, 6));
- r = c.emplace(5, 6, 7);
+ r = c.emplace(std::piecewise_construct, std::forward_as_tuple(5),
+ std::forward_as_tuple(6, 7));
assert(r.second);
assert(c.size() == 3);
assert(r.first->first == 5);
diff --git a/libcxx/test/containers/unord/unord.map/unorder.map.modifiers/emplace_hint.pass.cpp b/libcxx/test/containers/unord/unord.map/unorder.map.modifiers/emplace_hint.pass.cpp
index 41109d2f23a..463fc3b53a6 100644
--- a/libcxx/test/containers/unord/unord.map/unorder.map.modifiers/emplace_hint.pass.cpp
+++ b/libcxx/test/containers/unord/unord.map/unorder.map.modifiers/emplace_hint.pass.cpp
@@ -39,7 +39,8 @@ int main()
assert(r->first == 4);
assert(r->second == Emplaceable(5, 6));
- r = c.emplace_hint(e, 5, 6, 7);
+ r = c.emplace_hint(e, std::piecewise_construct, std::forward_as_tuple(5),
+ std::forward_as_tuple(6, 7));
assert(c.size() == 3);
assert(r->first == 5);
assert(r->second == Emplaceable(6, 7));
diff --git a/libcxx/test/containers/unord/unord.multimap/unord.multimap.modifiers/emplace.pass.cpp b/libcxx/test/containers/unord/unord.multimap/unord.multimap.modifiers/emplace.pass.cpp
index 4b5fb60fa61..f05edd88f25 100644
--- a/libcxx/test/containers/unord/unord.multimap/unord.multimap.modifiers/emplace.pass.cpp
+++ b/libcxx/test/containers/unord/unord.multimap/unord.multimap.modifiers/emplace.pass.cpp
@@ -38,7 +38,8 @@ int main()
assert(r->first == 4);
assert(r->second == Emplaceable(5, 6));
- r = c.emplace(5, 6, 7);
+ r = c.emplace(std::piecewise_construct, std::forward_as_tuple(5),
+ std::forward_as_tuple(6, 7));
assert(c.size() == 3);
assert(r->first == 5);
assert(r->second == Emplaceable(6, 7));
diff --git a/libcxx/test/containers/unord/unord.multimap/unord.multimap.modifiers/emplace_hint.pass.cpp b/libcxx/test/containers/unord/unord.multimap/unord.multimap.modifiers/emplace_hint.pass.cpp
index f2ca733ccc7..302451f1d68 100644
--- a/libcxx/test/containers/unord/unord.multimap/unord.multimap.modifiers/emplace_hint.pass.cpp
+++ b/libcxx/test/containers/unord/unord.multimap/unord.multimap.modifiers/emplace_hint.pass.cpp
@@ -40,7 +40,8 @@ int main()
assert(r->second == Emplaceable(5, 6));
assert(r == next(c.begin()));
- r = c.emplace_hint(r, 3, 6, 7);
+ r = c.emplace_hint(r, std::piecewise_construct, std::forward_as_tuple(3),
+ std::forward_as_tuple(6, 7));
assert(c.size() == 3);
assert(r->first == 3);
assert(r->second == Emplaceable(6, 7));
OpenPOWER on IntegriCloud