2017-10-05 71 views
1

今天我是通過在Visual Studio C++實現的源代碼挖掘和整個的std ::的unique_ptr的以下行絆倒:類名後的模板參數是什麼意思?

template<class _Ty,class _Dx> 
    class unique_ptr<_Ty[], _Dx> 

我明白的第一行。第二行讓我感到驚訝。爲什麼類的名稱背後有模板參數?那是什麼意思?可能它與這是unique_ptr的數組變體有關嗎?

+1

http://en.cppreference.com/w/cpp/language/partial_specialization – chris

+0

這是部分專業化。 – Jodocus

+0

請問之前請研究。如果你只是在學習C++,請考慮閱讀[其中一本書](https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) –

回答

3

的的std::unique_ptr主模板看起來如下:上述

template<class _Ty, class _Dx> 
class unique_ptr { 
    /* ... */ 
}; 

模板適用於任何類型的,除了陣列。因此,std::unique_ptr具有用於陣列看起來像一個partial specialization

template<class _Ty, class _Dx> 
class unique_ptr<_Ty[], _Dx> { 
    /* ... */ 
}; 

當編譯器遇到所提到的模板的一個實例例如as

std::unique_ptr<int[]> foo; 

它將使用專門的模板而不是主模板。

相關問題