I use typedefing structs in C++ due to my C habits, I simply like such structs defs, and it doesn't influence performance. I also use very often (only for structs, never for classes) smth like this:
typedef struct {(..)} blah, *blahPtr;
It's quite usefull for me.
Quote: void f3(T1 p) // error: already defined
Hmm not true ;> I think you meant void f1(T1 p) as for overloaded function - you have different function name here, no error will be returned ;)
Quote:T2 t2 = s; // error: unrelated types.
As a matter of fact you are not (or shouldn't be allowed to do something like that:
T2 a, b;(..)a = b;
unless you overload = operator, and you can do it as well for (T2, T2) as for (T2, T1) ;>
Greets
[edit] You were quicker with this overloading ;p You answer too fast ;p