diff options
Diffstat (limited to 'llvm/unittests/ADT/StringMapTest.cpp')
-rw-r--r-- | llvm/unittests/ADT/StringMapTest.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/llvm/unittests/ADT/StringMapTest.cpp b/llvm/unittests/ADT/StringMapTest.cpp index c9ef3f8a..35135cd 100644 --- a/llvm/unittests/ADT/StringMapTest.cpp +++ b/llvm/unittests/ADT/StringMapTest.cpp @@ -381,6 +381,9 @@ struct MoveOnly { return *this; } + bool operator==(const MoveOnly &RHS) const { return i == RHS.i; } + bool operator!=(const MoveOnly &RHS) const { return i != RHS.i; } + private: MoveOnly(const MoveOnly &) = delete; MoveOnly &operator=(const MoveOnly &) = delete; @@ -550,6 +553,26 @@ TEST_F(StringMapTest, StructuredBindings) { EXPECT_EQ("a", Key); EXPECT_EQ(42, Value); } + + for (const auto &[Key, Value] : A) { + EXPECT_EQ("a", Key); + EXPECT_EQ(42, Value); + } +} + +TEST_F(StringMapTest, StructuredBindingsMoveOnly) { + StringMap<MoveOnly> A; + A.insert(std::make_pair("a", MoveOnly(42))); + + for (auto &[Key, Value] : A) { + EXPECT_EQ("a", Key); + EXPECT_EQ(MoveOnly(42), Value); + } + + for (const auto &[Key, Value] : A) { + EXPECT_EQ("a", Key); + EXPECT_EQ(MoveOnly(42), Value); + } } namespace { |