6

假设我们要设计一个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));
    }
    ...
};

或者,或者:

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

?

4

0 回答 0