In GCC 4.4 and earlier, and in the original C++ standard,
struct A { struct B {}; };
A::A::A::B::B::B::B::B myVariable;
is a perfectly valid declaration of a variable of type A::B.
In GCC 4.5, and in the current C++ standard, A::A is A's constructor, not the type A.
The attached patch corrects this for GCC 4.5. As best I can understand things, this should not adversely affect other compilers.
In GCC 4.4 and earlier, and in the original C++ standard, A::B::B: :B::B:: B myVariable;
struct A { struct B {}; };
A::A::
is a perfectly valid declaration of a variable of type A::B.
In GCC 4.5, and in the current C++ standard, A::A is A's constructor, not the type A.
The attached patch corrects this for GCC 4.5. As best I can understand things, this should not adversely affect other compilers.