std::make_unique
为什么标准 C++11 库中没有函数模板?我发现
std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3));
有点冗长。下面的不是更好吗?
auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3);
这new
很好地隐藏了类型,并且只提到了一次类型。
无论如何,这是我尝试实现的make_unique
:
template<typename T, typename... Args>
std::unique_ptr<T> make_unique(Args&&... args)
{
return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
}
我花了很std::forward
长时间来编译这些东西,但我不确定它是否正确。是吗?究竟是什么std::forward<Args>(args)...
意思?编译器对此有何看法?