[英]Template Parameters and template arguments
我對 C++(14) 比較陌生。 我正在通過閱讀cpprefernce的官方文檔來增強我目前的知識。 我有一些關於模板聲明的問題: 此頁面在類模板的聲明中提供了以下可能的參數(非類型模板參數)。
type name(optional) // (1)
我的問題是:
1.) type name
是什么意思? 我確信它與這里提到的typename
。
在同一頁面上,我看到了示例:
// simple non-type template parameter
template<int N>
struct S { int a[N]; };
然而,從//1
,我看到類型名稱是可選的,所以我假設下面應該工作但它沒有:(實際上我看到下面的聲明template<N>
可以被視為具有類型參數的模板參數。)\\
// simple non-type template parameter
template<N>
struct S { int a[N]; };
那么我對官方文檔的理解/閱讀哪里出了問題?
編輯 :
我嘗試了以下方法:
template< int>
struct S { int a[N]; };
不編譯時出現錯誤'N' was not declared in the scope
。
為此, N
需要是一種類型。
模板只接受一個類型,后跟該類型的可選名稱。 因此,例如這可能有效(盡管我還沒有嘗試過):
template <int> // ...
但請注意,未聲明N
如果你想在你的模板中使用N
,你需要像這樣聲明N
:
template <int N> // ...
在這里, N
被聲明為int
,所以你可以使用它就像你的int
。
注意:您還可以選擇以下內容:
template <class N> // ...
這里N
成為一個類型的模板替換。 它不是上面的 int 。
當然,這可能不是您想要的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.