tmp/tmp8e60irnd/{from.md → to.md}
RENAMED
|
@@ -1,28 +1,31 @@
|
|
| 1 |
### [[temp]]: templates <a id="diff.cpp03.temp">[[diff.cpp03.temp]]</a>
|
| 2 |
|
| 3 |
-
**Change:**
|
| 4 |
-
|
| 5 |
-
|
|
|
|
|
|
|
| 6 |
|
| 7 |
**Change:** Remove whitespace requirement for nested closing template
|
| 8 |
right angle brackets. **Rationale:** Considered a persistent but minor
|
| 9 |
annoyance. Template aliases representing non-class types would
|
| 10 |
exacerbate whitespace issues. **Effect on original feature:** Change to
|
| 11 |
semantics of well-defined expression. A valid C++03 expression
|
| 12 |
containing a right angle bracket (“`>`”) followed immediately by another
|
| 13 |
right angle bracket may now be treated as closing two templates. For
|
| 14 |
-
example
|
| 15 |
-
right-shift operator, but invalid in this International Standard because
|
| 16 |
-
“`>>`” closes two templates.
|
| 17 |
|
| 18 |
``` cpp
|
| 19 |
template <class T> struct X { };
|
| 20 |
template <int N> struct Y { };
|
| 21 |
X< Y< 1 >> 2 > > x;
|
| 22 |
```
|
| 23 |
|
|
|
|
|
|
|
|
|
|
| 24 |
**Change:** Allow dependent calls of functions with internal linkage.
|
| 25 |
**Rationale:** Overly constrained, simplify overload resolution rules.
|
| 26 |
-
**Effect on original feature:** A valid C++03 program
|
| 27 |
-
different result
|
| 28 |
|
|
|
|
| 1 |
### [[temp]]: templates <a id="diff.cpp03.temp">[[diff.cpp03.temp]]</a>
|
| 2 |
|
| 3 |
+
**Change:** Repurpose `export` for modules
|
| 4 |
+
[[module]], [[cpp.module]], [[cpp.import]]. **Rationale:** No
|
| 5 |
+
implementation consensus for the C++03 meaning of `export`. **Effect on
|
| 6 |
+
original feature:** A valid C++03 program containing `export` is
|
| 7 |
+
ill-formed in this revision of C++.
|
| 8 |
|
| 9 |
**Change:** Remove whitespace requirement for nested closing template
|
| 10 |
right angle brackets. **Rationale:** Considered a persistent but minor
|
| 11 |
annoyance. Template aliases representing non-class types would
|
| 12 |
exacerbate whitespace issues. **Effect on original feature:** Change to
|
| 13 |
semantics of well-defined expression. A valid C++03 expression
|
| 14 |
containing a right angle bracket (“`>`”) followed immediately by another
|
| 15 |
right angle bracket may now be treated as closing two templates. For
|
| 16 |
+
example:
|
|
|
|
|
|
|
| 17 |
|
| 18 |
``` cpp
|
| 19 |
template <class T> struct X { };
|
| 20 |
template <int N> struct Y { };
|
| 21 |
X< Y< 1 >> 2 > > x;
|
| 22 |
```
|
| 23 |
|
| 24 |
+
This code is valid in C++03 because “`>>`” is a right-shift operator,
|
| 25 |
+
but invalid in this revision of C++ because “`>>`” closes two templates.
|
| 26 |
+
|
| 27 |
**Change:** Allow dependent calls of functions with internal linkage.
|
| 28 |
**Rationale:** Overly constrained, simplify overload resolution rules.
|
| 29 |
+
**Effect on original feature:** A valid C++03 program can get a
|
| 30 |
+
different result in this revision of C++.
|
| 31 |
|