VS2010模板化类功能中的可选参数

时间:2013-06-21 17:34:31

标签: c++ templates default-arguments

我在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编译并运行得很好,即使预编译器不满意并将其标记为问题。

有什么想法? 谢谢!

1 个答案:

答案 0 :(得分:0)

VS 2010中的intellisense分析器中存在错误(错误警报)。这看起来就像其中之一。用于intellisense的分析器与编译器中使用的实际解析器不同。