Здравствуйте, Аноним, Вы писали:
class A{};
А>почему не компилируется следующий код?
Потому что компилятор не обязан за тебя точку с запятой ставить
Извините, точку с запятой я сам забыл написать,
проблема именно в шаблоне функции:
class A
{
public:
A() : pInt(NULL){}
int* pInt;
};
template<typename T>
void proc(T val)
{
class C : public T
{
};
}
int main()
{
A a;
proc( a );
return 0;
}
VC++ 6.0
ошибка компилятора INTERNAL COMPILER ERROR
Аноним 91 пишет:
> VC++ 6.0
> ошибка компилятора INTERNAL COMPILER ERROR
INTERNAL COMPILER ERROR — это баг компилятора. В 6-ре много таких
финтов всплывает при работе именно с шаблонами.
Ставь сервис-паки, переходи на 2005.
Posted via RSDN NNTP Server 2.1 beta
Здравствуйте, Аноним, Вы писали:
А>ошибка компилятора INTERNAL COMPILER ERROR
ну и вынеси наружу, в чем проблемма?
template<class T>
class C : public T
{
};
template<typename T>
void proc(T val)
{ C<T> cc;
}
Здравствуйте, Quasi, Вы писали:
Q>В соответствии со стандартом должен компилироваться. Какой компилятор используется?
template<typename T>
void proc(T val)
{ template<>
class C : public T
{
};
}
на это — template declaration is not allowed here
я право не знаю С она template или нет, так что насчет стандарта