summaryrefslogtreecommitdiffstats
path: root/libcxx/test/std/containers/associative/map/map.cons/move_alloc.pass.cpp
diff options
context:
space:
mode:
authorMarshall Clow <mclow.lists@gmail.com>2016-08-17 05:58:40 +0000
committerMarshall Clow <mclow.lists@gmail.com>2016-08-17 05:58:40 +0000
commit2a10c960fa33b7048b48107823f5879cf301dece (patch)
tree055ff7b53c98af2ffcc7abc42a03e4aa1b42f502 /libcxx/test/std/containers/associative/map/map.cons/move_alloc.pass.cpp
parent14f383e9c4b776d415cbc66902d8492dbcc0c0e1 (diff)
downloadbcm5719-llvm-2a10c960fa33b7048b48107823f5879cf301dece.tar.gz
bcm5719-llvm-2a10c960fa33b7048b48107823f5879cf301dece.zip
Support allocators with explicit conversion constructors. Fixes bug #29000
llvm-svn: 278904
Diffstat (limited to 'libcxx/test/std/containers/associative/map/map.cons/move_alloc.pass.cpp')
-rw-r--r--libcxx/test/std/containers/associative/map/map.cons/move_alloc.pass.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/libcxx/test/std/containers/associative/map/map.cons/move_alloc.pass.cpp b/libcxx/test/std/containers/associative/map/map.cons/move_alloc.pass.cpp
index 4ccf56118ae..8349f13fdeb 100644
--- a/libcxx/test/std/containers/associative/map/map.cons/move_alloc.pass.cpp
+++ b/libcxx/test/std/containers/associative/map/map.cons/move_alloc.pass.cpp
@@ -229,6 +229,45 @@ int main()
assert(m3.key_comp() == C(5));
assert(m1.empty());
}
+ {
+ typedef std::pair<MoveOnly, MoveOnly> V;
+ typedef std::pair<const MoveOnly, MoveOnly> VC;
+ typedef test_compare<std::less<MoveOnly> > C;
+ typedef explicit_allocator<VC> A;
+ typedef std::map<MoveOnly, MoveOnly, C, A> M;
+ typedef std::move_iterator<V*> I;
+ V a1[] =
+ {
+ V(1, 1),
+ V(1, 2),
+ V(1, 3),
+ V(2, 1),
+ V(2, 2),
+ V(2, 3),
+ V(3, 1),
+ V(3, 2),
+ V(3, 3)
+ };
+ M m1(I(a1), I(a1+sizeof(a1)/sizeof(a1[0])), C(5), A{});
+ V a2[] =
+ {
+ V(1, 1),
+ V(1, 2),
+ V(1, 3),
+ V(2, 1),
+ V(2, 2),
+ V(2, 3),
+ V(3, 1),
+ V(3, 2),
+ V(3, 3)
+ };
+ M m2(I(a2), I(a2+sizeof(a2)/sizeof(a2[0])), C(5), A{});
+ M m3(std::move(m1), A{});
+ assert(m3 == m2);
+ assert(m3.get_allocator() == A{});
+ assert(m3.key_comp() == C(5));
+ assert(m1.empty());
+ }
#endif
#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
}
OpenPOWER on IntegriCloud