У меня странная проблема в MSVS 2010. У меня есть класс с функцией templitized и содержит параметр со значением по умолчанию.
В моем заголовочном файле:
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 ()’ в классе, но разве он не должен знать об этом лучше? Я думал, что смыслом по умолчанию было сделать параметры необязательными в вызове. Код компилируется и запускается просто отлично, даже если прекомпилятор недоволен и помечает это как проблему.
Какие-нибудь мысли??
Спасибо!
Есть ошибки (ложные тревоги) в анализаторе intellisense в VS 2010. И это похоже на один из них. Анализатор, используемый для intellisense, отличается от фактического анализатора, используемого в компиляторе.
Других решений пока нет …