通过emplace_back实现push_back

Dan*_*ica 5 c++ push move forward emplace

假设我们想要设计一个C类似的容器std::vector.push_back通过调用实现是一个好主意emplace_back,例如:

template <typename T>
class C {
  public:
    ...
    template <typename Args...>
    void emplace_back(Args&&... args) { 
      ... // uses T(std::forward<Args>(args)...) internally
    }
    void push_back(T value) {
      emplace_back(std::move(value));
    }
    ...
};
Run Code Online (Sandbox Code Playgroud)

或者,或者:

    template <typename U>
    void push_back(U&& value) {
      emplace_back(std::forward(value));
    }
Run Code Online (Sandbox Code Playgroud)