Implementation of push_back via emplace_back

Viewed 653

Suppose we want design a container C similar to std::vector. Is it a good idea to implement push_back by calling emplace_back, such as:

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));
    }
    ...
};

or, alternatively:

    template <typename U>
    void push_back(U&& value) {
      emplace_back(std::forward(value));
    }

?

0 Answers
Related