typedef-name 'identifier1' used as synonym for class-name 'identifier2'
A typedef name which names a class is itself a class name. However, only a class declared without a tag can be named. In the following line of code the typedef name P
is promoted to class name but Q
is not.
typedef struct { int member; } P, Q;
Q
remains a normal typedef name and a synonym for the class.
The following example causes this warning:
typedef struct _T
{
int i;
} T;
struct U : T
{
int j;
}; // warning
struct V : _T
{
int j;
}; // OK