In C++, types may not be defined in return or argument types.
ISO/ ANSI C allows such definitions. For example, the
declarations:
void print(struct X { int i;} x); // error in C++ enum count{one, two, three} counter(); // error in C++
produce errors in C++, but are valid declarations in ISO/ANSI C.