cout is only as type safe as you want it to be.
Example
Though it seems like I had to do a lot of work to break cout, in the real world this sort of thing comes up every once in a while.Code:int whatever = -1; std::cout << *(std::string *)whatever << std::endl;