This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: c++/8858: [2003-01-22] Gcc "rebinds" template member names.


http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&p
r=8858

It seems like the parser is confused by the long chain, and just "ignores"
any add<> but the last one: basically, it parses any add<> like it was
list::add, instead of list::add::add. In the snippet, the first add<char> is
like "overwritten" by the second add<int>, so that the final type is
cons<int, cons<double, float> >, as the assert shows. If you just break the
chain:

 typedef list<cons<double,float> >::add<char>::type temp;
 typedef list<temp>::add<int>::type test_type;

everything works as expected (g++ 3.2)

Giovanni Bajo


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]