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:
Jacques Lucke 2022-06-29 12:06:47 +02:00
parent 43b65150ed
commit c51b8ec863
2 changed files with 12 additions and 2 deletions

View File

@ -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;
}

View File

@ -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);
}