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(7)); M m3(std::move(m1), A(7)); REQUIRE(m3 == m2); REQUIRE(m3.get_allocator() == A(7)); REQUIRE(m3.key_comp() == C(5)); #ifndef ALLOWED_NON_EMPTY_AFTER_MOVE REQUIRE(m1.empty()); #endif } { typedef std::pair<MoveOnly, MoveOnly> V; typedef std::pair<const MoveOnly, MoveOnly> VC; typedef test_compare<std::less<MoveOnly> > C; typedef test_allocator<VC> A; typedef contiguous::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),
// bool empty() const; #include "defs.h" #include "contiguous/map.h" #include "catch.hpp" #include "min_allocator.h" TEST_CASE("map access empty pass") { { typedef contiguous::map<int, double> M; M m; REQUIRE(m.empty()); m.insert(M::value_type(1, 1.5)); REQUIRE(!m.empty()); m.clear(); REQUIRE(m.empty()); } #if TEST_STD_VER >= 11 { typedef contiguous::map<int, double, std::less<int>, min_allocator<std::pair<const int, double>>> M; M m; REQUIRE(m.empty()); m.insert(M::value_type(1, 1.5)); REQUIRE(!m.empty()); m.clear(); REQUIRE(m.empty()); }