0

我在 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()”定义函数原型,但它不应该更清楚吗?我认为默认值的重点是在调用中使参数可选。即使预编译器不满意并将其标记为问题,代码也可以正常编译和运行。

有什么想法吗??谢谢!

4

1 回答 1

0

VS 2010 的智能感知分析器中存在错误(误报)。这似乎是其中之一。用于智能感知的分析器与编译器中使用的实际解析器不同。

于 2013-06-21T19:22:12.097 回答