Skip to content

Commit 0175dce

Browse files
[ADT] Add a range constructor to SmallSetVector (#132645)
DenseSet recently gained a range constructor: DenseSet<T> Dest(llvm::from_range, Src); This patch adds the same signature to SmallSetVector for consistency.
1 parent 3b20ac0 commit 0175dce

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

llvm/include/llvm/ADT/SetVector.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -386,6 +386,10 @@ class SmallSetVector : public SetVector<T, SmallVector<T, N>, DenseSet<T>, N> {
386386
SmallSetVector(It Start, It End) {
387387
this->insert(Start, End);
388388
}
389+
390+
template <typename Range>
391+
SmallSetVector(llvm::from_range_t, Range &&R)
392+
: SmallSetVector(adl_begin(R), adl_end(R)) {}
389393
};
390394

391395
} // end namespace llvm

llvm/unittests/ADT/SetVectorTest.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,3 +100,9 @@ TEST(SetVector, InsertRange) {
100100
Set.insert_range(Args);
101101
EXPECT_THAT(Set, ::testing::ElementsAre(3, 1, 2));
102102
}
103+
104+
TEST(SmallSetVector, CtorRange) {
105+
constexpr unsigned Args[] = {3, 1, 2};
106+
SmallSetVector<unsigned, 4> Set(llvm::from_range, Args);
107+
EXPECT_THAT(Set, ::testing::ElementsAre(3, 1, 2));
108+
}

0 commit comments

Comments
 (0)