[英]template<typename> - how does it work?
我遇到過這樣的語法:
template<typename>
struct is_const{static const bool value = 0;};
這段代碼將如何表現以及如何應用? 我沒有在互聯網上找到任何例子或解釋。
我想知道缺少參數名稱(例如T)。
這是一個主模板,它采用單個模板參數,並且靜態bool
成員等於0
。 這可能是類型特征的主要模板定義,並且在其他地方存在相應的特殊化,如下所示:
template <typename T>
struct is_const<const T>
{static const bool value = 1;};
這將允許您檢查類型是否符合const
限定:
static_assert(!is_const<int>::value, "wat");
static_assert(is_const<const int>::value, "wat");
template <typename T>
class SampleClass
{
public:
T values [2];
SampleClass(T first, T second)
{
values[0]=first;
values[1]=second;
}
};
嘗試像這樣的類型名稱是通用的編程方式。 搜索通用編程c ++。 你會得到很多資源
在基本級別的解釋中,每次使用模板時,編譯器都會生成模板化結構,類,函數等的版本。
例如:
template<typename T>
struct StructName
{
T memberVariable;
};
使用此代碼時:
StructName<float> variable = StructName<float>();
編譯器生成:
struct StructName
{
float memberVariable;
};
你可以在這里閱讀更多相關信息: https : //en.wikipedia.org/wiki/Template_metaprogramming
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.