我在类T的函数foo中遇到问题。我认为,GCC没有解决类型项,它认为" item.foo< 0>()"是合乎逻辑的表达。
为什么编译器在解析类型之前检查表达式。
MSVC在Windows上运行良好。
template<class TType>
class A
{
public:
template<int TNum>
void foo()
{}
};
template<class TType>
class T
{
public:
void boo()
{
A<TType> item;
item.foo<0>(); // error: expected primary-expression before ‘)’ token
}
void foo()
{
A<int> item;
item.foo<0>(); // OK!
}
};