I know that when we are using template inside another template, we should write it like this:
vector<pair<int,int> > s;
and if we write it without the whitespace:
vector<pair<int,int>> s;
we will get an error:
`>>' should be `> >' within a nested template argument list
I see this is understandable, but I just can't help but wondering, in which cases will this be really ambiguous?
Sometimes you want it to be >>
. Consider
boost::array<int, 1024>>2> x;
In C++03 this successfully parses and creates an array of size 256
.
It won't ever be ambiguous. This is proven by the fact that in C++0x you don't have to write a space between closing template >
s any more.
The thing is that the compilers would prefer to tokenize the input as context-independently as possible. Since C++ is not a context independent language anyway, adding just this one special case isn't going to make things particularly harder.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With