我的编译器不支持make_unique。怎么写一个?template< class T, class... Args > unique_ptr<T> make_unique( Args&&... args );
3 回答
小怪兽爱吃肉
TA贡献1852条经验 获得超1个赞
复制自make_unique和完美转发(Herb Sutter的博客中提供了同样的内容)
template<typename T, typename... Args>
std::unique_ptr<T> make_unique(Args&&... args)
{
return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
}
如果在VC2012中需要它,请参阅是否可以在VS2012 中编写make_unique()?
不过,如果sasha.sochka答案中的解决方案可以使用您的编译器进行编译,那么我会选择该解决方案。这更加复杂,并且也适用于数组。
梵蒂冈之花
TA贡献1900条经验 获得超5个赞
的目的是,正确使用该_Known_bound
版本时,永远不要匹配该版本make_unique
。如果有人尝试使用它,因为make_unique<T[N]>()
它将与_Known_bound
版本匹配并导致错误。
- 3 回答
- 0 关注
- 734 浏览
添加回答
举报
0/150
提交
取消