вложенные шаблоны
От: ssm Россия  
Дата: 15.04.03 08:18
Оценка:
Есть код:


template<typename T1>
struct test{

    template<typename T, typename U> struct A{};

    template<typename T, typename U>
    struct B : public A<T, U>{
       typedef A<T, U> _Base;
    };

};

int main(){
    test<int>();
    return 0;
}


который gcc2.95 отказался компилить, говорит мол A — нешаблон. Comeau проглатывает на ура...
удалось только так забороть:


    template<typename T, typename U>
    struct B : public A<T, U>{
       typedef test<T1>::A<T, U> _Base;
    };


А посему возникает вопрос о корректности кода в первом примере.
Re: вложенные шаблоны
От: MACTEP Россия  
Дата: 15.04.03 09:16
Оценка:
Здравствуйте, ssm, Вы писали:

ssm>[ccode]

ssm>template<typename T1>
ssm>struct test{
ssm> template<typename T, typename U> struct A{};
ssm> template<typename T, typename U>
ssm> struct B : public A<T, U>{
ssm> typedef A<T, U> _Base;
ssm> };
ssm>};
ssm>который gcc2.95 отказался компилить, говорит мол A — нешаблон. Comeau проглатывает на ура...
ssm>А посему возникает вопрос о корректности кода в первом примере.

в Visual C++ 6 проходит нормально ...
Правило наименьшего удивления: Программа должна работать так, чтобы это вызывало наименьшее удивление у пользователя.
Построй свой мини-горд на http://rumactep.myminicity.com/
Re[2]: вложенные шаблоны
От: ssm Россия  
Дата: 15.04.03 09:21
Оценка:
Здравствуйте, MACTEP, Вы писали:


MAC>в Visual C++ 6 проходит нормально ...


А правомерно ли это с точки зрения стандарта? А то я чевойт ненашел
Re[3]: вложенные шаблоны
От: MaximE Великобритания  
Дата: 15.04.03 09:30
Оценка:
Здравствуйте, ssm, Вы писали:

ssm>Здравствуйте, MACTEP, Вы писали:


ssm>

MAC>>в Visual C++ 6 проходит нормально ...

ssm>А правомерно ли это с точки зрения стандарта? А то я чевойт ненашел


Intel и VC++ 7 хавают.

Единственная мысль, что gcc не нравится, что _Base начинается с подчеркивания...
Re[4]: вложенные шаблоны
От: ssm Россия  
Дата: 15.04.03 09:34
Оценка:
Здравствуйте, MaximE, Вы писали:

ME>Единственная мысль, что gcc не нравится, что _Base начинается с подчеркивания...


Увы, но поведение этого безобразия независит от подчеркивания в имени _Base
Re: вложенные шаблоны
От: Denn  
Дата: 15.04.03 10:55
Оценка:
Здравствуйте, ssm, Вы писали:

ssm>который gcc2.95 отказался компилить, говорит мол A — нешаблон. Comeau проглатывает на ура...

ssm>удалось только так забороть:


ssm>
ssm>    template<typename T, typename U>
ssm>    struct B : public A<T, U>{
ssm>       typedef test<T1>::A<T, U> _Base;
ssm>    };
ssm>


ssm>А посему возникает вопрос о корректности кода в первом примере.


Не разбираясь, сходу предполагаю, что, возможно, здесь нужно использовать template как квалификатор, то есть написать так:

typedef template A<T, U> _Base;


Посмотри, например, Страуструпа B.13.6
Re[2]: вложенные шаблоны
От: ssm Россия  
Дата: 15.04.03 11:29
Оценка:
Здравствуйте, Denn, Вы писали:

D> Не разбираясь, сходу предполагаю, что, возможно, здесь нужно использовать template как квалификатор, то есть написать так:


D>
D>typedef template A<T, U> _Base;
D>


Нууу!!! Этого даже Comeau непонимает...

D> Посмотри, например, Страуструпа B.13.6


Я в спец. издании такой главы ненашел
Re[3]: вложенные шаблоны
От: Lorenzo_LAMAS  
Дата: 15.04.03 11:31
Оценка:
ssm>Я в спец. издании такой главы ненашел

Это — приложение — смотри в конце книги. Но, ответ Denn — неправильный.
Of course, the code must be complete enough to compile and link.
Re[4]: вложенные шаблоны
От: Denn  
Дата: 15.04.03 11:37
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:


L_L>Это — приложение — смотри в конце книги. Но, ответ Denn — неправильный.


Охотно верю... Вечером может дойдут руки — разберусь.
Спасибо!!!
Re[4]: вложенные шаблоны
От: ssm Россия  
Дата: 15.04.03 11:37
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:


L_L>Это — приложение — смотри в конце книги.

Да я понял, что приложение , но в приложении B у меня последняя глава №5 "Exercices"

L_L>Но, ответ Denn — неправильный.

Да мне уже Comeau по этому поводу нажаловался
Re[5]: вложенные шаблоны
От: Lorenzo_LAMAS  
Дата: 15.04.03 11:40
Оценка:
нуну, не может быть. TCPL Бьярна Страуструпа, там идет приложение А, потом В, никаких упражнений там нет.
Of course, the code must be complete enough to compile and link.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.