------- Comment #4 from bangerth at dealii dot org 2008-01-13 02:31 -------
(In reply to comment #0)
> template <typename> class X {};
>
> class Y {
> typedef X<int> X;
> };
>
>
> produces the following error:
> redef.cpp:4: error: declaration of 'typedef class X<int> Y::X'
> redef.cpp:1: error: changes meaning of 'X' from 'class X<int>'
What the error message says is this: before the typedef declaration,
referring to the name 'X' inside the class refers to the global
template ::X. After the declaration, 'X' inside the class refers
to the typedef. C++ does not allow declarations to change the
meaning of names.
W.
--
bangerth at dealii dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |bangerth at dealii dot org
Status|UNCONFIRMED |RESOLVED
Resolution| |INVALID
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34531