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