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 }; }