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