BLI: add Vector.append_and_get_index with rvalue parameter
This makes it possible to use this method with `std::unique_ptr`.
This commit is contained in:
parent
43b65150ed
commit
c51b8ec863
|
@ -450,9 +450,17 @@ class Vector {
|
|||
* added value.
|
||||
*/
|
||||
int64_t append_and_get_index(const T &value)
|
||||
{
|
||||
return this->append_and_get_index_as(value);
|
||||
}
|
||||
int64_t append_and_get_index(T &&value)
|
||||
{
|
||||
return this->append_and_get_index_as(std::move(value));
|
||||
}
|
||||
template<typename... ForwardValue> int64_t append_and_get_index_as(ForwardValue &&...value)
|
||||
{
|
||||
const int64_t index = this->size();
|
||||
this->append(value);
|
||||
this->append_as(std::forward<ForwardValue>(value)...);
|
||||
return index;
|
||||
}
|
||||
|
||||
|
|
|
@ -264,7 +264,8 @@ TEST(vector, AppendAndGetIndex)
|
|||
EXPECT_EQ(vec.append_and_get_index(10), 1);
|
||||
EXPECT_EQ(vec.append_and_get_index(10), 2);
|
||||
vec.append(10);
|
||||
EXPECT_EQ(vec.append_and_get_index(10), 4);
|
||||
int value = 10;
|
||||
EXPECT_EQ(vec.append_and_get_index(value), 4);
|
||||
}
|
||||
|
||||
TEST(vector, AppendNonDuplicates)
|
||||
|
@ -479,6 +480,7 @@ TEST(vector, UniquePtrValue)
|
|||
vec.remove_and_reorder(0);
|
||||
vec.remove(0);
|
||||
EXPECT_EQ(vec.size(), 1);
|
||||
EXPECT_EQ(vec.append_and_get_index(std::make_unique<int>(4)), 1);
|
||||
|
||||
UNUSED_VARS(a, b);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue