Listing 1 The example from the ARM limiting the context sensitivity of class member declarations

typedef int c;
enum { i = 1 };

class X
   {
   char v[i];
   int f() { return sizeof(c); }
   char c;             // error: typedef name 'c'
                    // redefined after use
   enum { i = 2; };    // error: constant 'i'
                    // redefined after use
   };

typedef char *T;

struct Y
   {
   T a ;
   typedef long T;     // error: T already defined
   T b;
   }
// End of File