class CClass1
{
// ...
template<class T> void Func()
{
printf("sizeof(T)=%i\n", sizeof(T));
}
// ...
};
Проблема вызова шаблонный метода
Код:
При попытке вызова метода Func
Код:
main()
{
CClass1 C;
C.Func<int>();
}
{
CClass1 C;
C.Func<int>();
}
MSVC++ 6.0 ругается на неверное использование типа int. GCC нормально компилирует. В связи с чем возник вопрос: так ведут себя все C++ компиляторы от Microsoft или это издержки только 6-ой версии, и вообще стоит ли использовать подобные шаблонные методы, для инстанциалиации которых требуется явно указывать тип?
Код:
class CClass1
{
// ...
public:
template<class T> void Func()
{
printf("sizeof(T)=%i\n", sizeof(T));
}
// ...
};
void main()
{
CClass1 C;
C.Func<int>();
}
{
// ...
public:
template<class T> void Func()
{
printf("sizeof(T)=%i\n", sizeof(T));
}
// ...
};
void main()
{
CClass1 C;
C.Func<int>();
}
Такой код в 2003 и 2005 Студиях нормально работает.Посмотри номер ошибки в окне Output,установи на номер курсор и вызови справку F1.Чего там написано ? У меня просто 6-ой студии нет под рукой.
Возможно, это баг шестой студии. Подобное обсуждалось:
Насколько я помню, 6-я студия не отвечает требованиям стандарта ISO-IEC 14882-1998, отсюда и всякие нестыковки. По-моему в ней еще нет поддержки вложенных шаблонов...
Понял, что нужно менять VS6.0 на что-нить поновее. :)