猿问

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

我的编译器不支持make_unique。怎么写一个?


template< class T, class... Args > unique_ptr<T> make_unique( Args&&... args );


噜噜哒
浏览 753回答 3
3回答

小怪兽爱吃肉

复制自make_unique和完美转发(Herb Sutter的博客中提供了同样的内容)template<typename T, typename... Args>std::unique_ptr<T> make_unique(Args&&... args){&nbsp; &nbsp; return std::unique_ptr<T>(new T(std::forward<Args>(args)...));}如果在VC2012中需要它,请参阅是否可以在VS2012 中编写make_unique()?不过,如果sasha.sochka答案中的解决方案可以使用您的编译器进行编译,那么我会选择该解决方案。这更加复杂,并且也适用于数组。

梵蒂冈之花

的目的是,正确使用该_Known_bound版本时,永远不要匹配该版本make_unique。如果有人尝试使用它,因为make_unique<T[N]>()它将与_Known_bound版本匹配并导致错误。
随时随地看视频慕课网APP
我要回答