diff options
author | vadim-xd <vadim-xd@yandex-team.com> | 2025-03-06 23:16:47 +0300 |
---|---|---|
committer | vadim-xd <vadim-xd@yandex-team.com> | 2025-03-06 23:29:53 +0300 |
commit | 9b0a13bddce49bfb5ea59d8c4a668d32d7dada3b (patch) | |
tree | 703460061dcc9d4b2905303cd47964909cd7ec18 /library/cpp | |
parent | 6294a7d3a99349c80ab2fc1ced8a246eb7d14208 (diff) | |
download | ydb-9b0a13bddce49bfb5ea59d8c4a668d32d7dada3b.tar.gz |
Return reference from TCompactVector::emplace_back
Fixup rXXXXXX
commit_hash:775dffda71dd0a6ad0e91ca361b27ba4f15a0039
Diffstat (limited to 'library/cpp')
-rw-r--r-- | library/cpp/containers/compact_vector/compact_vector.h | 9 | ||||
-rw-r--r-- | library/cpp/containers/compact_vector/compact_vector_ut.cpp | 3 |
2 files changed, 7 insertions, 5 deletions
diff --git a/library/cpp/containers/compact_vector/compact_vector.h b/library/cpp/containers/compact_vector/compact_vector.h index cff5345ee2..c055bd49da 100644 --- a/library/cpp/containers/compact_vector/compact_vector.h +++ b/library/cpp/containers/compact_vector/compact_vector.h @@ -234,15 +234,16 @@ public: } template <class... Args> - void EmplaceBack(Args&&... args) { + T& EmplaceBack(Args&&... args) { Reserve(Size() + 1); - new (Ptr + Size()) T(std::forward<Args>(args)...); + auto* t = new (Ptr + Size()) T(std::forward<Args>(args)...); ++(Header()->Size); + return *t; } template <class... Args> - void emplace_back(Args&&... args) { - EmplaceBack(std::forward<Args>(args)...); + T& emplace_back(Args&&... args) { + return EmplaceBack(std::forward<Args>(args)...); } T& Back() { diff --git a/library/cpp/containers/compact_vector/compact_vector_ut.cpp b/library/cpp/containers/compact_vector/compact_vector_ut.cpp index 5aac5303f3..e576ac3a95 100644 --- a/library/cpp/containers/compact_vector/compact_vector_ut.cpp +++ b/library/cpp/containers/compact_vector/compact_vector_ut.cpp @@ -62,7 +62,8 @@ Y_UNIT_TEST_SUITE(TCompactVectorTest) { }; TCompactVector<TFoo> vector; - vector.emplace_back(123); + auto& x = vector.emplace_back(123); + UNIT_ASSERT_VALUES_EQUAL(&x, &vector.back()); UNIT_ASSERT_VALUES_EQUAL(vector.back().ConstructedFrom, "int"); vector.emplace_back('c'); UNIT_ASSERT_VALUES_EQUAL(vector.back().ConstructedFrom, "char"); |