Personally, I'd pay good money (out of my own pocket) for a C++ compiler that gave types their shortest possible name in the prevailing scope when emitting errors.
GCC doesn't find the shortest name but it does now seem to say things like int2int and std::string instead of map<int, int> or std::basic_string<endless guff about allocators>.
(...it doesn't say int2int::iterator though, preferring struct std::_Rb_tree_iterator<std::pair<const int, int> >. So there is work yet to be done, at least as of 4.1.2 l-(
Maybe one day (http://en.wikipedia.org/wiki/C%2B%2B0x#Concepts) at least using the STL won't mean "please spam me rotten with unnecessary template details".