[llvm] r356312 - [ADT] Make SmallVector emplace_back return a reference
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Fri Mar 15 19:41:45 PDT 2019
Author: maskray
Date: Fri Mar 15 19:41:45 2019
New Revision: 356312
URL: http://llvm.org/viewvc/llvm-project?rev=356312&view=rev
Log:
[ADT] Make SmallVector emplace_back return a reference
This follows the C++17 std::vector change and can simplify immediate
back() calls.
Modified:
llvm/trunk/include/llvm/ADT/SmallVector.h
Modified: llvm/trunk/include/llvm/ADT/SmallVector.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/SmallVector.h?rev=356312&r1=356311&r2=356312&view=diff
==============================================================================
--- llvm/trunk/include/llvm/ADT/SmallVector.h (original)
+++ llvm/trunk/include/llvm/ADT/SmallVector.h Fri Mar 15 19:41:45 2019
@@ -318,6 +318,7 @@ class SmallVectorImpl : public SmallVect
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 <typename... ArgTypes> void emplace_back(ArgTypes &&... Args) {
+ template <typename... ArgTypes> reference emplace_back(ArgTypes &&... Args) {
if (LLVM_UNLIKELY(this->size() >= this->capacity()))
this->grow();
::new ((void *)this->end()) T(std::forward<ArgTypes>(Args)...);
this->set_size(this->size() + 1);
+ return this->back();
}
SmallVectorImpl &operator=(const SmallVectorImpl &RHS);
More information about the llvm-commits
mailing list