Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.snto-msu.net/showflat.php?Number=2433812&src=arc&showlite=
Дата изменения: Unknown
Дата индексирования: Wed Apr 13 08:29:31 2016
Кодировка: Windows-1251
warning: implicit typename is deprecated - Public forum of MSU united student networks
Root | Google | Yandex | Mail.ru | Kommersant | Afisha | LAN Support
  
Technical >> Development (Archive)

Страницы: 1
krendelkandidat nauk

Рег.: 20.10.2003
Сообщений: 14379
Рейтинг: 10274
  warning: implicit typename is deprecated
      27.02.2005 13:51
 

Баг или фича?

Надо ли (и КАК?) избавляться от таких варнингов?

Если не надо - можно ли в gcc отключить только такие варнинги?



Druxa
Дрюха

Рег.: 27.06.2003
Сообщений: 2722
Из: Троицк
Рейтинг: 1974
  Re: warning: implicit typename is deprecated [re: krendel]
      27.02.2005 13:57
 

Quote:

(и КАК?)


Писать слово "typename" в нужном месте?



нет, я не богат... я сказочно не богат... но я и не умен...
krendelkandidat nauk

Рег.: 20.10.2003
Сообщений: 14379
Рейтинг: 10274
  Re: warning: implicit typename is deprecated [re: Druxa]
      27.02.2005 14:06
 

на самом деле полностью ошибка такая:

В ответ на:

ierarhy/seq_tree.h:123: warning: `AttGraphAdvanced<VKey, long int, typename
Alphabet::symbol>::Edges' is implicitly a typename
ierarhy/seq_tree.h:123: warning: implicit typename is deprecated, please see
the documentation for details




а код такой:

SCM::Edges edges=(*scheme).getChildren(*i);

вроде фича в том, что ентому компилятору не нравится, что SCM::Edges typename.
но убирать typenam-ы не охота - дофига их.

Druxa
Дрюха

Рег.: 27.06.2003
Сообщений: 2722
Из: Троицк
Рейтинг: 1974
  Re: warning: implicit typename is deprecated [re: krendel]
      27.02.2005 15:01
 

Quote:

SCM::Edges edges=(*scheme).getChildren(*i);


Надо писать
code:
typename SCM::Edges; SCM::Edges edges=(*scheme).getChildren(*i);
Может и в одну строчку можно, не знаю.

Quote:

что ентому компилятору не нравится, что SCM::Edges typename.


Это я вообще не понял, что ты сказал Чего там кому не нравится



нет, я не богат... я сказочно не богат... но я и не умен...
krendelkandidat nauk

Рег.: 20.10.2003
Сообщений: 14379
Рейтинг: 10274
  Re: warning: implicit typename is deprecated [re: krendel]
      27.02.2005 17:35
 

Все! вспомнил нормальный пример:

код такой (класс наследуется от AttGraphAdvanced<VKey, VVal, EdgeVal>, в котором объявлен тип Edges):
В ответ на:


const Edges&
getEdgesRev() const
{
return E_rev_;
}




ошибка:

В ответ на:

ierarhy/automat_new.h|13| warning: `AttGraphAdvanced<VKey, VVal,
|| EdgeVal>::Edges' is implicitly a typename
ierarhy/automat_new.h|13| warning: implicit typename is deprecated, please see
|| the documentation for details




Проблема:

Не знаю, как грамотно переписать, что бы варнинга не было.
если тупо дописывать typename, то естественно вылазит

parse error before ;

DarkGrayМодератор
Carpal Tunnel

Рег.: 30.09.2002
Сообщений: 31415
Рейтинг: 8951
  Re: warning: implicit typename is deprecated [re: krendel]
      27.02.2005 17:39
 

перед Edges пробовал typename писать?
именно перед словом Edges?

feather
enthusiast

Рег.: 19.04.2003
Сообщений: 208
Рейтинг: 61
  Re: warning: implicit typename is deprecated [re: krendel]
      27.02.2005 21:57
 

В gcc начиная с 3.4 улучшили соответстивие стандарту С++. Соответственно, в 3.3.х много всего deprecated. Авторы gcc советуют ботать список изменений в сериях 3.4.х.

krendelkandidat nauk

Рег.: 20.10.2003
Сообщений: 14379
Рейтинг: 10274
  Re: warning: implicit typename is deprecated [re: DarkGray]
      28.02.2005 20:41
 

везде писал - не пашет.

krendelkandidat nauk

Рег.: 20.10.2003
Сообщений: 14379
Рейтинг: 10274
  Re: warning: implicit typename is deprecated [re: feather]
      28.02.2005 20:42
 

я в курсе, что это изменение в 3.4.х

только какой смысл ботать этот список - там написано, как бороться с описанной проблемой?

feather
enthusiast

Рег.: 19.04.2003
Сообщений: 208
Рейтинг: 61
  Re: warning: implicit typename is deprecated [re: krendel]
      28.02.2005 22:36
 

Сразу по ссылке, разве не оно? Да и Druxa это же советовал.

code:
struct K { typedef int mytype_t; }; template <class T1> struct A { template <class T2> struct B { void callme(void); }; template <int N> void bar(void) { // Use 'typename' to tell the parser that T1::mytype_t names // a type. This is needed because the name is dependent (in // this case, on template parameter T1). typename T1::mytype_t x; x = 0; } };


Страницы: 1

Technical >> Development (Archive)

Дополнительная информация
0 зарегистрированных и 0 анонимных пользователей просматривают этот форум.

Модераторы:  DarkGray 

Печать темы

Права
      Вы можете создавать новые темы
      Вы можете отвечать на сообщения
      HTML отключен
      UBBCode включен

Рейтинг:
Просмотров темы:

Переход в