Consider the following excerpt from the safe bool idiom:
typedef void (Testable::*bool_type)() const; operator bool_type() const;
Is it possibl
Answering the "Are there cases where a typedef is absolutely necessary?" from the question title, here is one example of where a typedef is needed:
f(unsigned char()); // compiler error! typedef unsigned char Byte; f(Byte()); // fine!
See the results here: http://ideone.com/JPUra