我都碰到過這樣的語法:template <typename> - 它是如何工作的?
template<typename>
struct is_const{static const bool value = 0;};
這將如何代碼的行爲怎麼可能它被應用?我在互聯網上沒有找到任何例子或解釋。
我想知道缺少參數名稱(例如T)。
我都碰到過這樣的語法:template <typename> - 它是如何工作的?
template<typename>
struct is_const{static const bool value = 0;};
這將如何代碼的行爲怎麼可能它被應用?我在互聯網上沒有找到任何例子或解釋。
我想知道缺少參數名稱(例如T)。
這是一個主模板,它採用單個模板參數,並具有等於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");
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
如果你想知道的是,缺乏一個實際的名*爲「類型名稱」,該名稱是可選的。 – molbdnilo