Affected subclause: [temp.arg]
Change: Remove whitespace requirement for nested closing template right angle
brackets
. Rationale: Considered a persistent but minor annoyance
. Template aliases
representing non-class types would exacerbate whitespace issues
. Effect on original feature: Change to semantics of well-defined expression
. A valid C++ 2003 expression
containing a right angle bracket (“
>”) followed immediately by
another right angle bracket may now be treated as closing two templates
. For example:
template <class T> struct X { };
template <int N> struct Y { };
X< Y< 1 >> 2 > > x;
This code is valid in C++ 2003 because “
>>”
is a right-shift operator, but invalid in this revision of C++ because
“
>>” closes two templates
.