[diff.cpp03.temp]

# Annex C (informative) Compatibility [[diff]](./#diff)

## C.6 C++ and ISO C++ 2003 [[diff.cpp03]](diff.cpp03#temp)

### C.6.6 [[temp]](temp "13 Templates"): templates [diff.cpp03.temp]

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L2369)

**Affected subclause:** [[temp.param]](temp.param)  


**Change:** Repurpose export for modules ([[module]](module "10 Modules"), [[cpp.module]](cpp.module "15.5 Module directive"), [[cpp.import]](cpp.import "15.6 Header unit importation"))[.](#1.sentence-1)

  


**Rationale:** No implementation consensus for the C++ 2003 meaning of export[.](#1.sentence-2)

  


**Effect on original feature:** A valid C++ 2003 program containing export is ill-formed in this
revision of C++[.](#1.sentence-3)

[2](#2)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L2378)

**Affected subclause:** [[temp.arg]](temp.arg)  


**Change:** Remove whitespace requirement for nested closing template right angle
brackets[.](#2.sentence-1)

  


**Rationale:** Considered a persistent but minor annoyance[.](#2.sentence-2)

Template aliases
representing non-class types would exacerbate whitespace issues[.](#2.sentence-3)

  


**Effect on original feature:** Change to semantics of well-defined expression[.](#2.sentence-4)

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[.](#2.sentence-5)

[*Example [1](#example-1)*: 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[.](#2.sentence-6)

â *end example*]

[3](#3)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L2400)

**Affected subclause:** [[temp.dep.candidate]](temp.dep.candidate)  


**Change:** Allow dependent calls of functions with internal linkage[.](#3.sentence-1)

  


**Rationale:** Overly constrained, simplify overload resolution rules[.](#3.sentence-2)

  


**Effect on original feature:** A valid C++ 2003 program can get a different result in this
revision of C++[.](#3.sentence-3)
