2017-07-26 93 views
-5

我正想通性病的自我學習:: make_unique功能,我發現下面的聲明在cppreference.com在C新型功能++ - 這是什麼代碼意味着

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

我完全無法理解的簽名上面的方法/功能。

+1

你的第二個問題使得這個問題太廣泛了。你爲什麼試圖學習每一個新功能? – Tas

+2

僅供參考:https://isocpp.org/files/papers/p0636r0.html – Tas

+0

否 - 並非所有,但至少他們是如何學習C++ 98同樣我希望逐步提升我的技能到新的水平通過練習的一步練習,就像我學習C++ 98 – Prakash

回答

2

有在此聲明中使用了許多 「新」 的特點:

基本上,代碼的意思是「爲任意類型的任意數量的參數聲明一個函數模板並返回專用於給定類型T的unique_ptr」。另外,右值引用(& &)告訴您參數將被移動而不是被複制。

總之:make_unique<Type>(v)基本上與unique_ptr<Type>(new Type(v))相同。

+1

除了既方便又相當於C++ 11的std :: make_shared ',C++ 14的''std :: make_unique ''的主要價值在於異常處理語義更清晰''新''拋出與Ctor拋出。唯一的缺點是Visual Studio IntelliSense不如參數中那樣有幫助。 –