为什么这段代码没有工作并给出“未定义的最大值”?
#include <iostream>
using namespace std;
template<typename T>
struct Foo {
static T const max;
};
template<> struct Foo<int> { // Specialization
static int max;
};
template<typename T> T const Foo<T>::max = 22;
template struct Foo<int>;
int main() {
struct Foo<int> ma;
cout << ma.max;
return 0;
}
我定义了静态变量并且我实例化了模板(我相信显式实例化在这里没用)。
怎么了?
答案 0 :(得分:1)
template<typename T> T const Foo<T>::max = 22;
是一般情况的定义,不是专业化的定义。
您还必须为int专业化定义int Foo<int>::max = 22;
。