C ++中的新功能 - 这段代码意味着什么

时间:2017-07-26 05:03:11

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

我通过自学习std :: make_unique功能,我在cppreference.com

找到了以下声明
template< class T, class... Args >
unique_ptr<T> make_unique( Args&&... args );

我完全无法理解上述方法/功能的签名。

1 个答案:

答案 0 :(得分:2)

有很多&#34;新&#34;本声明中使用的功能:

  • 模板(Movie.joins(:genres).where({genres: { name: ['comedy', 'drama']}}) Movie.joins(:genres, :theaters).where({genres: { name: ['comedy', 'drama']}}). where({theaters: { city: 'NY' }}) 关键字;请参阅https://en.wikipedia.org/wiki/Template_(C%2B%2B)
  • 可变参数模板(<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <RelativeLayout android:id="@+id/outer" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_toLeftOf="@+id/button" android:padding="5dp" android:background="#08445e"> <TextView android:id="@+id/textViewRoom" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:text="Room {room}" android:textColor="#fff" /> <TextView android:id="@+id/textViewTime" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:text="Time: {Time} sec" android:textColor="#fff" /> </RelativeLayout> <RelativeLayout android:id="@+id/inner" android:layout_width="match_parent" android:layout_height="50dp" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_below="@+id/outer" android:layout_toLeftOf="@+id/button" android:layout_toStartOf="@+id/button" android:background="#d1d1d1"> <TextView android:id="@+id/textViewRequest" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:textColor="#000" android:text="{View 1}" android:textSize="20sp" /> </RelativeLayout> </LinearLayout> 参数;请参阅https://en.wikipedia.org/wiki/Variadic_template
  • 智能指针(template,请参阅https://en.wikipedia.org/wiki/Smart_pointer
  • 右值引用(...,请参阅https://en.wikipedia.org/wiki/C%2B%2B11#Rvalue_references_and_move_constructors

基本上,代码表示&#34;为具有任意类型的任意数量参数的函数声明模板,并返回专用于给定类型T&#34;的unique_ptr。此外,右值参考(&amp;&amp;)告诉您将移动参数而不是复制参数。

简而言之:unique_ptrArgs&&基本相同。