<div dir="ltr">This could probably have/use a unit test, I think?</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Mar 15, 2019 at 7:40 PM Fangrui Song via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: maskray<br>
Date: Fri Mar 15 19:41:45 2019<br>
New Revision: 356312<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=356312&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=356312&view=rev</a><br>
Log:<br>
[ADT] Make SmallVector emplace_back return a reference<br>
<br>
This follows the C++17 std::vector change and can simplify immediate<br>
back() calls.<br>
<br>
Modified:<br>
llvm/trunk/include/llvm/ADT/SmallVector.h<br>
<br>
Modified: llvm/trunk/include/llvm/ADT/SmallVector.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/SmallVector.h?rev=356312&r1=356311&r2=356312&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/SmallVector.h?rev=356312&r1=356311&r2=356312&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/ADT/SmallVector.h (original)<br>
+++ llvm/trunk/include/llvm/ADT/SmallVector.h Fri Mar 15 19:41:45 2019<br>
@@ -318,6 +318,7 @@ class SmallVectorImpl : public SmallVect<br>
public:<br>
using iterator = typename SuperClass::iterator;<br>
using const_iterator = typename SuperClass::const_iterator;<br>
+ using reference = typename SuperClass::reference;<br>
using size_type = typename SuperClass::size_type;<br>
<br>
protected:<br>
@@ -641,11 +642,12 @@ public:<br>
insert(I, IL.begin(), IL.end());<br>
}<br>
<br>
- template <typename... ArgTypes> void emplace_back(ArgTypes &&... Args) {<br>
+ template <typename... ArgTypes> reference emplace_back(ArgTypes &&... Args) {<br>
if (LLVM_UNLIKELY(this->size() >= this->capacity()))<br>
this->grow();<br>
::new ((void *)this->end()) T(std::forward<ArgTypes>(Args)...);<br>
this->set_size(this->size() + 1);<br>
+ return this->back();<br>
}<br>
<br>
SmallVectorImpl &operator=(const SmallVectorImpl &RHS);<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div>