Why use a typedef class {} Name
?
I learnt this in IBM C++ doc, no hint to use here.
This answer assumes that there's some interesting content in the class, not just {}
.
In C++, you can have a function with the same name as a class (for compatibility with C), but you pretty much never want to.
You can't have a function with the same name as a typedef, so doing this protects you against ill-disciplined name choices. Pretty much nobody bothers, and even if you're going to bother you'd probably write it:
class Name {};
typedef Name Name; // reserve the name
If the code you're referring to really is as written (I can't see it by following your link), then it's rather like class Name {};
(which is a peculiar thing to write, why would you call an empty class Name
?), but modified for the above consideration.
This is a hangover from the 'C' language.
In C, if you have
struct Pt { int x; int y; };
then to declare a variable of this struct, you need to do
struct Pt p;
The typedef helped you avoid this in C
typedef struct { int x; int y; } Pt;
Now you can do
Pt p;
in C.
In C++, this was never necessary because
class Pt { int x; int y; };
allowed you to do
Pt p;
It provides no notational benefits in C++ as it does in C. OTOH, it leads to restrictions because this syntax does not provide any mechanism for construction, or destruction.
i.e. you cannot use the name typedef name in the constructor or destructor.
typedef class { int x; int y; } Pt;
You cannot have a constructor called Pt, nor a destructor. So in essence, most of the time, you shouldn't do this in C++.