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