2.4 KiB
[diff.cpp03.temp]
Annex C (informative) Compatibility [diff]
C.6 C++ and ISO C++ 2003 [diff.cpp03]
C.6.6 [temp]: templates [diff.cpp03.temp]
Affected subclause: [temp.param]
Change: Repurpose export for modules ([module], [cpp.module], [cpp.import]).
Rationale: No implementation consensus for the C++ 2003 meaning of export.
Effect on original feature: A valid C++ 2003 program containing export is ill-formed in this revision of C++.
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.
[Example 1: template struct X { };template 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.
â end example]
Affected subclause: [temp.dep.candidate]
Change: Allow dependent calls of functions with internal linkage.
Rationale: Overly constrained, simplify overload resolution rules.
Effect on original feature: A valid C++ 2003 program can get a different result in this revision of C++.