make_unique和完美转发 [英] make_unique and perfect forwarding
本文介绍了make_unique和完美转发的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
为什么在标准C ++ 11库中没有 std :: make_unique
函数模板?我找到
std :: unique_ptr< SomeUserDefinedType> p(new SomeUserDefinedType(1,2,3));
有点冗长。下面是不是更好?
auto p = std :: make_unique< SomeUserDefinedType>(1,2,3) ;
这隐藏了 new
类型一次。
无论如何,这里是我尝试执行 make_unique
:
模板< 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)...
是什么意思? C ++标准化委员会主席Herb Sutter在他的