2016-01-14 28 views
3

我都碰到過這樣的語法:template <typename> - 它是如何工作的?

template<typename> 
struct is_const{static const bool value = 0;}; 

這將如何代碼的行爲怎麼可能它被應用?我在互聯網上沒有找到任何例子或解釋。

我想知道缺少參數名稱(例如T)。

+2

如果你想知道的是,缺乏一個實際的名*爲「類型名稱」,該名稱是可選的。 – molbdnilo

回答

7

這是一個主模板,它採用單個模板參數,並具有等於0的靜態bool成員。很可能,這是一種性狀主模板定義,並且有相應的專業化的其他地方看起來像這樣:

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"); 
0
template <typename T> 
class SampleClass 
{ 
public: 
    T values [2]; 
    SampleClass(T first, T second) 
    { 
     values[0]=first; 
     values[1]=second; 
    } 
}; 

嘗試這樣類型名稱的東西是編程的通用方法。尋找泛型編程C++。您將獲得資源

0

的很多在解釋一個基本的水平,每個模板使用的編譯器時產生一個版本的模板結構,類,功能等

例如:

template<typename T> 
struct StructName 
{ 
    T memberVariable; 
}; 

當這個碼被用於:

StructName<float> variable = StructName<float>(); 

編譯器生成:

struct StructName 
{ 
    float memberVariable; 
}; 

你可以閱讀更多關於此這裏:https://en.wikipedia.org/wiki/Template_metaprogramming

相關問題