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, the following code is valid in C++ 2003 because “
>>”
is a right-shift operator, but invalid in this International Standard because
“
>>” closes two templates
.
template <class T> struct X { };
template <int N> struct Y { };
X< Y< 1 >> 2 > > x;