In C++, a typedef name may not be redefined in a class
declaration after being used in the declaration. ISO/ANSI C
allows such a declaration. For example:
void main ()
{
typedef double db;
struct st
{
db x;
double db; // error in C++, valid in ISO/ANSI C
};
}