簡體   English   中英

template <typename> - 它是如何工作的?

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

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