<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>