It is a bit like global data. In any reasonably large system, you find templates of templates despite your best efforts to avoid it. The traditional advice (and it is good advice) is that one should typedef almost anything that is widely used to promote consistency and minimize redundancy. But there are times when expediency rules the roost, and you wind up hastily creating something like the following:
vector<vector<int>> myQuickAndDirtyVectorVector;
Unfortunately, the tokenization rules for C++ caused that pair of > symbols to be interpreted as bit-shift right operator, and the code generally did not compile.
This has now been changed; be as sloppy as the compiler will allow.