шаблон функции
От: Аноним  
Дата: 31.08.07 13:49
Оценка:
class A{}

template<typename T>
void proc(T val)
{
class Foo : A
{
} ;

Foo f;
}

почему не компилируется следующий код?
Re: шаблон функции
От: Quasi  
Дата: 31.08.07 13:53
Оценка:
Здравствуйте, Аноним, Вы писали:

А>class A{};


А>template<typename T>

А>void proc(T val)
А>{
А> class Foo : A
А> {
А> } ;

А> Foo f;

А>}

А>почему не компилируется следующий код?

В соответствии со стандартом должен компилироваться. Какой компилятор используется?
Re: шаблон функции
От: Bell Россия  
Дата: 31.08.07 13:54
Оценка:
Здравствуйте, Аноним, Вы писали:

А>class A{}


А>template<typename T>

А>void proc(T val)
А>{
А> class Foo : A
А> {
А> } ;

А> Foo f;

А>}

А>почему не компилируется следующий код?

Из-за отсутствия точки с запятой после определения класса A.

ЗЫ
Обычно в таких случаях приводят диагностику и версию компилятора.
Любите книгу — источник знаний (с) М.Горький
Re: шаблон функции
От: Lorenzo_LAMAS  
Дата: 31.08.07 13:54
Оценка:
Здравствуйте, Аноним, Вы писали:
class A{};

А>почему не компилируется следующий код?

Потому что компилятор не обязан за тебя точку с запятой ставить
Of course, the code must be complete enough to compile and link.
Re: шаблон функции
От: Аноним  
Дата: 01.09.07 07:40
Оценка:
Извините, точку с запятой я сам забыл написать,
проблема именно в шаблоне функции:

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
Re[2]: шаблон функции
От: MasterZiv СССР  
Дата: 02.09.07 08:42
Оценка:
Аноним 91 пишет:
> VC++ 6.0
> ошибка компилятора INTERNAL COMPILER ERROR

INTERNAL COMPILER ERROR — это баг компилятора. В 6-ре много таких
финтов всплывает при работе именно с шаблонами.
Ставь сервис-паки, переходи на 2005.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: шаблон функции
От: Programador  
Дата: 02.09.07 15:16
Оценка:
Здравствуйте, Аноним, Вы писали:

А>ошибка компилятора 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 или нет, так что насчет стандарта
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.