From: Fangrui Song Date: Sat, 16 Mar 2019 02:41:45 +0000 (+0000) Subject: [ADT] Make SmallVector emplace_back return a reference X-Git-Tag: llvmorg-10-init~9829 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a957f47e0a362d13fa947a1218315a0c46ab6db6;p=platform%2Fupstream%2Fllvm.git [ADT] Make SmallVector emplace_back return a reference This follows the C++17 std::vector change and can simplify immediate back() calls. llvm-svn: 356312 --- diff --git a/llvm/include/llvm/ADT/SmallVector.h b/llvm/include/llvm/ADT/SmallVector.h index e3bfb90..96a49cd 100644 --- a/llvm/include/llvm/ADT/SmallVector.h +++ b/llvm/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);