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