diff options
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/blenlib/BLI_vector.hh | 10 | ||||
-rw-r--r-- | source/blender/blenlib/tests/BLI_vector_test.cc | 4 |
2 files changed, 12 insertions, 2 deletions
diff --git a/source/blender/blenlib/BLI_vector.hh b/source/blender/blenlib/BLI_vector.hh index c23d846d277..1f5f97d754d 100644 --- a/source/blender/blenlib/BLI_vector.hh +++ b/source/blender/blenlib/BLI_vector.hh @@ -451,8 +451,16 @@ class Vector { */ 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; } diff --git a/source/blender/blenlib/tests/BLI_vector_test.cc b/source/blender/blenlib/tests/BLI_vector_test.cc index 29b6d2b41fe..3a12fe14de3 100644 --- a/source/blender/blenlib/tests/BLI_vector_test.cc +++ b/source/blender/blenlib/tests/BLI_vector_test.cc @@ -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); } |