我在MSVS 2010中有一个奇怪的问题。我有一个带有模板化功能的类,它包含一个默认值的参数。
在我的标题文件中:
typedef unsinged int data32
class myClass
{
private:
...
public:
...
template <typename T>
T* myF(data32);
}
...
template<typename T>
T* myClass::myF(data32 size = 1)
{
...
}
好的,现在在我的主要部分我有这样的事情:
int main()
{
myClass A;
data32* myInt = A.myF<data32>(100); // no complaints from pre-compiler
data32* myInt2 = A.myF<data32>(); // pre-compiler complains "Error: no instance of the function template "myClass::myF" matches the argument list"
}
我明白为什么它不高兴,因为我没有在课堂上为'myF()'定义一个函数原型,但它不应该更清楚吗?我认为默认点是在调用中使参数可选。 代码DOES编译并运行得很好,即使预编译器不满意并将其标记为问题。
有什么想法? 谢谢!
答案 0 :(得分:0)
VS 2010中的intellisense分析器中存在错误(错误警报)。这看起来就像其中之一。用于intellisense的分析器与编译器中使用的实际解析器不同。