warning: implicit typename is deprecated
(и КАК?)Писать слово "typename" в нужном месте?
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-ы не охота - дофига их.
SCM::Edges edges=(*scheme).getChildren(*i);Надо писать
Может и в одну строчку можно, не знаю.
typename SCM::Edges;
SCM::Edges edges=(*scheme).getChildren(*i);
что ентому компилятору не нравится, что SCM::Edges typename.Это я вообще не понял, что ты сказал Чего там кому не нравится
код такой (класс наследуется от 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 ;
именно перед словом Edges?
везде писал - не пашет.
только какой смысл ботать этот список - там написано, как бороться с описанной проблемой?
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;
}
};
Оставить комментарий
SCIF32
Баг или фича?Надо ли (и КАК?) избавляться от таких варнингов?
Если не надо - можно ли в gcc отключить только такие варнинги?