I think your vector example is a bit unfortunate.
STDlib implementers would still have to use reserved identifiers as template parameter names.
Do you know why/where from those rules have orginitated? What is the rationale behind them?
If the rules (to have weird template parameter names in STL) come into existence just because there was no possibility to have just one name usable inside a class and outside, then this proposal fixes just that. And with this proposal they are free to just one name.
After all, in 99% time the STL implementers are not using obfuscated/distorted names for such things as "vector", "unordered_map" and so on...