为了账号安全,请及时绑定邮箱和手机立即绑定

如何在C ++ 11中实现make_unique函数?

如何在C ++ 11中实现make_unique函数?

C++
噜噜哒 2019-11-30 10:55:28
我的编译器不支持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答案中的解决方案可以使用您的编译器进行编译,那么我会选择该解决方案。这更加复杂,并且也适用于数组。


查看完整回答
反对 回复 2019-11-30
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

的目的是,正确使用该_Known_bound版本时,永远不要匹配该版本make_unique。如果有人尝试使用它,因为make_unique<T[N]>()它将与_Known_bound版本匹配并导致错误。

查看完整回答
反对 回复 2019-11-30
  • 3 回答
  • 0 关注
  • 734 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信