簡體   English   中英

模板參數和模板參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM