This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: c++/8858: [2003-01-22] Gcc "rebinds" template member names.
- From: "Giovanni Bajo" <giovannibajo at libero dot it>
- To: <gcc-gnats at gcc dot gnu dot org>,<gcc-bugs at gcc dot gnu dot org>,<nobody at gcc dot gnu dot org>,<gcc-prs at gcc dot gnu dot org>,<eivuokko at bonumit dot com>
- Date: Fri, 24 Jan 2003 23:51:58 +0100
- Subject: 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