我有这个用g ++成功编译的模板。当我删除看似无关的函数时,会导致语法错误。
图表1 :此编译成功。请注意,这是该文件的唯一内容;模板未实例化。
template<typename T> struct aaa {
void w() {
T x;
x.goo<5>();
}
template<float***, char> void goo() {
}
};
图表2 :以下结果导致语法错误。
template<typename T> struct aaa {
void w() {
T x;
x.goo<5>();
}
};
错误是
aoeu.cpp: In member function 'void aaa<T>::w()':
aoeu.cpp:6:18: error: expected primary-expression before ')' token
x.goo<5>();
我使用GCC 4.8和5.2尝试了相同的结果。 void goo
的存在如何影响行x.goo<5>();
是否会产生错误?