From: Fangrui Song Date: Sat, 16 Mar 2019 02:41:45 +0000 (+0000) Subject: [ADT] Make SmallVector emplace_back return a reference X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d6001a9722ffe7cc70c20dfed27c6515bead372f;p=llvm [ADT] Make SmallVector emplace_back return a reference This follows the C++17 std::vector change and can simplify immediate back() calls. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@356312 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/ADT/SmallVector.h b/include/llvm/ADT/SmallVector.h index e3bfb90e1ba..96a49cd9550 100644 --- a/include/llvm/ADT/SmallVector.h +++ b/include/llvm/ADT/SmallVector.h @@ -318,6 +318,7 @@ class SmallVectorImpl : public SmallVectorTemplateBase { public: using iterator = typename SuperClass::iterator; using const_iterator = typename SuperClass::const_iterator; + using reference = typename SuperClass::reference; using size_type = typename SuperClass::size_type; protected: @@ -641,11 +642,12 @@ public: insert(I, IL.begin(), IL.end()); } - template void emplace_back(ArgTypes &&... Args) { + template reference emplace_back(ArgTypes &&... Args) { if (LLVM_UNLIKELY(this->size() >= this->capacity())) this->grow(); ::new ((void *)this->end()) T(std::forward(Args)...); this->set_size(this->size() + 1); + return this->back(); } SmallVectorImpl &operator=(const SmallVectorImpl &RHS);