The programmer can choose a specific template instance for typedef that should only be used with this type. One type can have <int,int,bool> , another type can be <float, bool string> , and the programmer does not want them to be convertible. The basic structure is the same, but they are not convertible.
What is it like:
struct ABC { int a,b;}; struct XYZ { int a,b;};
Both types are the same, but ABC does not convert to XYZ and vice versa. Many Windows descriptors are declared through DECLARE_HANDLE and are not converted.
source share