Re: VС 7.1 vs MINGW, кто прав?
От: ruslan_abdikeev Россия http://aruslan.nm.ru
Дата: 25.10.05 05:14
Оценка: +2
Здравствуйте, Аноним, Вы писали:
А>Подскажите, что надо поправить?

       void f()
       {
            // MINGW: expected primary-expression before "int" В чем тут проблема?
            // VC 7.1 компилит
//            this->>uuu<int>('a'); 
// Должно быть:
              this->template uuu<int>('a'); 
       };


MINGW прав.
VC7.1 — нет.
Re[3]: VС 7.1 vs MINGW, кто прав?
От: crable США  
Дата: 25.10.05 06:14
Оценка: 1 (1)
Здравствуйте, Erop, Вы писали:

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



_>>
_>>//            this->>uuu<int>('a'); 
_>>// Должно быть:
              this->>>template uuu<int>('a'); 
_>>


_>>MINGW прав.

_>>VC7.1 — нет.

E>А разве template в этом месте обязателен?

this зависит от параметра шаблона => в выражениях this->, *this. для обращения к шаблонному члену нужно писать template. (см. 14.2 4)
The last good thing written in C was Franz Schubert's Symphony No. 9.
VС 7.1 vs MINGW, кто прав?
От: Аноним  
Дата: 25.10.05 05:02
Оценка:
Подскажите, что надо поправить?

template <class self_t_t>
struct mix_in_t
{
       template <class TT, class V>
       void uuu(V const&)
       {
       }
};

template < class T, template <class> class mix_in_t_t>
struct foo
       :  mix_in_t_t< foo<T, mix_in_t_t> >
{
       
       void f()
       {
            // MINGW: expected primary-expression before "int" В чем тут проблема?
            // VC 7.1 компилит
            this->uuu<int>('a'); 
       };


};

int main (int argc, char *argv[])
{ 
    foo<int, mix_in_t> foo_instance;
    foo_instance.f();
    return 0;
}
Re[2]: VС 7.1 vs MINGW, кто прав?
От: Erop Россия  
Дата: 25.10.05 05:21
Оценка:
Здравствуйте, ruslan_abdikeev, Вы писали:


_>
_>//            this->>uuu<int>('a'); 
_>// Должно быть:
              this->>template uuu<int>('a'); 
_>


_>MINGW прав.

_>VC7.1 — нет.

А разве template в этом месте обязателен?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[3]: VС 7.1 vs MINGW, кто прав?
От: sergey_shandar США http://getboost.codeplex.com/
Дата: 25.10.05 06:01
Оценка:
Здравствуйте, Erop, Вы писали:

E>А разве template в этом месте обязателен?

Да, так как не известно — что uuu это шаблон во всех специализациях mix_in_t. Например, дальше может идти код:
template < class T, template <class> class mix_in_t_t >
struct mix_in_t< foo<T, mix_in_t_t> >
{
       static const int uuu = 3;
};


Тогда < это знак меньше (в this->uuu < int > ('a')).
getboost.codeplex.com
citylizard.codeplex.com
Re[3]: VС 7.1 vs MINGW, кто прав?
От: ruslan_abdikeev Россия http://aruslan.nm.ru
Дата: 25.10.05 06:08
Оценка:
Здравствуйте, Erop, Вы писали:
>> this->>>template uuu<int>('a');
E>А разве template в этом месте обязателен?

Конечно.
Компилятор же не знает — что это такое в конкретной специализации mix_in.
Будет шаблонная функций — значит '<' — это параметры.
Будет константа — значит '<' — это меньше.
И т.п.
Re[4]: VС 7.1 vs MINGW, кто прав?
От: Erop Россия  
Дата: 25.10.05 07:38
Оценка:
Здравствуйте, ruslan_abdikeev, Вы писали:

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

>>> this->>>template uuu<int>('a');
E>>А разве template в этом месте обязателен?

_>Конечно.

_>Компилятор же не знает — что это такое в конкретной специализации mix_in.
_>Будет шаблонная функций — значит '<' — это параметры.
_>Будет константа — значит '<' — это меньше.
_>И т.п.

Ну казалось бы, подставят параметр и узнает
Стандарт же не обязывает компилировать всё в шаблонах заранее?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[5]: VС 7.1 vs MINGW, кто прав?
От: crable США  
Дата: 25.10.05 07:45
Оценка:
Здравствуйте, Erop, Вы писали:

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


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

>>>> this->>>template uuu<int>('a');
E>>>А разве template в этом месте обязателен?

_>>Конечно.

_>>Компилятор же не знает — что это такое в конкретной специализации mix_in.
_>>Будет шаблонная функций — значит '<' — это параметры.
_>>Будет константа — значит '<' — это меньше.
_>>И т.п.

E>Ну казалось бы, подставят параметр и узнает

E>Стандарт же не обязывает компилировать всё в шаблонах заранее?
Но писать template в таких случаях заставляет.
The last good thing written in C was Franz Schubert's Symphony No. 9.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.