On Wed, Nov 14, 2012 at 6:10 PM, Piotr Wyderski
<piotr.wyder...@gmail.com> wrote:
> The following snippet:
>
> class A {};
> class B : public A {
>
>    typedef A super;
>
> public:
>
>    class X {};
> };
>
>
> class C : public B {
>
>    typedef B super;
>
>    class X : public super::X {
>
>       typedef super::X super;
>    };
> };
>
> compiles without a warning on Comeau and MSVC, but GCC (4.6.1 and
> 4.7.1) failes with the following message:
>
> $ gcc -c bug.cpp
> bug.cpp:18:24: error: declaration of ‘typedef class B::X C::X::super’
> [-fpermissive]
> bug.cpp:14:14: error: changes meaning of ‘super’ from ‘typedef class B
> C::super’ [-fpermissive]
>
> Should I file a report?
>
>     Best regards, Piotr

Here's a two-line TC:

typedef struct { typedef int type; } s1;
struct S2 { s1::type s1; };

Fails with GCC 4.6.3; succeeds with clang 3.0. Looks like a bug to me.

/Ulf

Reply via email to