tmp/tmpvyy4666b/{from.md → to.md}
RENAMED
|
@@ -1,17 +1,17 @@
|
|
| 1 |
### Clause [[special]]: special member functions <a id="diff.special">[[diff.special]]</a>
|
| 2 |
|
| 3 |
-
[[class.copy]] **Change:** Copying volatile objects
|
| 4 |
|
| 5 |
The implicitly-declared copy constructor and implicitly-declared copy
|
| 6 |
assignment operator cannot make a copy of a volatile lvalue. For
|
| 7 |
example, the following is valid in ISO C:
|
| 8 |
|
| 9 |
``` cpp
|
| 10 |
struct X { int i; };
|
| 11 |
volatile struct X x1 = {0};
|
| 12 |
-
struct X x2
|
| 13 |
struct X x3;
|
| 14 |
x3 = x1; // also invalid C++
|
| 15 |
```
|
| 16 |
|
| 17 |
**Rationale:** Several alternatives were debated at length. Changing the
|
|
@@ -21,9 +21,8 @@ two alternative signatures for these implicitly-defined operations
|
|
| 21 |
raised unanswered concerns about creating ambiguities and complicating
|
| 22 |
the rules that specify the formation of these operators according to the
|
| 23 |
bases and members. **Effect on original feature:** Deletion of
|
| 24 |
semantically well-defined feature. Semantic transformation. If volatile
|
| 25 |
semantics are required for the copy, a user-declared constructor or
|
| 26 |
-
assignment must be provided.
|
| 27 |
-
explicitly defaulted. If non-volatile semantics are required, an
|
| 28 |
explicit `const_cast` can be used. Seldom.
|
| 29 |
|
|
|
|
| 1 |
### Clause [[special]]: special member functions <a id="diff.special">[[diff.special]]</a>
|
| 2 |
|
| 3 |
+
[[class.copy]] **Change:** Copying volatile objects.
|
| 4 |
|
| 5 |
The implicitly-declared copy constructor and implicitly-declared copy
|
| 6 |
assignment operator cannot make a copy of a volatile lvalue. For
|
| 7 |
example, the following is valid in ISO C:
|
| 8 |
|
| 9 |
``` cpp
|
| 10 |
struct X { int i; };
|
| 11 |
volatile struct X x1 = {0};
|
| 12 |
+
struct X x2 = x1; // invalid C++
|
| 13 |
struct X x3;
|
| 14 |
x3 = x1; // also invalid C++
|
| 15 |
```
|
| 16 |
|
| 17 |
**Rationale:** Several alternatives were debated at length. Changing the
|
|
|
|
| 21 |
raised unanswered concerns about creating ambiguities and complicating
|
| 22 |
the rules that specify the formation of these operators according to the
|
| 23 |
bases and members. **Effect on original feature:** Deletion of
|
| 24 |
semantically well-defined feature. Semantic transformation. If volatile
|
| 25 |
semantics are required for the copy, a user-declared constructor or
|
| 26 |
+
assignment must be provided. If non-volatile semantics are required, an
|
|
|
|
| 27 |
explicit `const_cast` can be used. Seldom.
|
| 28 |
|