[llvm] r356312 - [ADT] Make SmallVector emplace_back return a reference

David Blaikie via llvm-commits llvm-commits at lists.llvm.org
Mon Mar 25 17:12:31 PDT 2019


This could probably have/use a unit test, I think?

On Fri, Mar 15, 2019 at 7:40 PM Fangrui Song via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> 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);
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190325/b8b7c3ec/attachment.html>


More information about the llvm-commits mailing list