1 #include2 #include 3 4 struct S { 5 template 6 static const T var=0; // declaration of a static data member template 7 }; 8 9 10 11 int main(){12 13 std::cout << std::is_same< decltype(S::var ), const int >::value;14 15 }
变量模板。是函数模板,类型模板,别名模板之后,另一种模板。
类S的静态成员变量S::var<int>的类型是const int注意,V.T.只能定义在名字空间中,如下是错误的,因为那里不是名字空间:
int main(){ templatestatic const T var=0; }
而如下是正确的:
templatestatic const T var = 0;int main(){ std::cout << var ;}
这里是全局名字空间,因此也是符合“定义在名字空间里”。
参考:http://en.cppreference.com/w/cpp/language/variable_template