【问题标题】:New Features in C++ - what does this code mean [duplicate]C ++中的新功能-这段代码是什么意思[重复]
【发布时间】:2017-07-26 05:03:10
【问题描述】:

我正在通过自学 std::make_unique 功能,在cppreference.com找到以下声明

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

我完全无法理解上面的方法/函数的签名。

【问题讨论】:

标签: c++ c++11 c++14


【解决方案1】:

此声明中使用了许多“新”功能:

基本上,该代码的意思是“为具有任意数量的任何类型的参数的函数声明一个模板,并返回一个专用于给定类型 T 的 unique_ptr”。此外,右值引用 (&&) 告诉您参数将被移动而不是复制。

简而言之:make_unique&lt;Type&gt;(v)unique_ptr&lt;Type&gt;(new Type(v))基本相同。

【讨论】:

  • C++14 的std::make_unique&lt;T&gt; 的主要价值除了既方便又等同于C++11 的std::make_shared&lt;T&gt; 之外,如果new throws vs . ctor抛出。唯一的缺点是 Visual Studio IntelliSense 不如使用参数有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-14
  • 1970-01-01
  • 2014-01-10
  • 2018-07-07
  • 2016-03-28
相关资源
最近更新 更多