Commit d9393de
committed
Reach the trivial copy and relocation by the source facade
A converting initialization asked the destination facade whether the copy
or the relocation is trivial, but the triviality that licenses a byte
copy belongs to the value being moved, which lives in the source. A super
is never stricter than the facade converting to it, so the byte copy was
missed whenever the derived facade was the stricter of the two, and the
value went through the erased invoker instead.
Corrected three lines of the specification along the way. The copy
assignment is not "as if by auto(rhs).swap(*this)", which is not even
formed for a facade that forbids relocation. The converting move
assignment loses the contained value on a throwing relocation exactly as
the move assignment does. The move constructor is noexcept for trivial
relocatability, which its documented signature spelled as an equality.1 parent c371353 commit d9393de
4 files changed
Lines changed: 28 additions & 5 deletions
File tree
- docs/spec/proxy
- include/proxy/v4/detail
- tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
53 | 53 | | |
54 | 54 | | |
55 | 55 | | |
56 | | - | |
| 56 | + | |
57 | 57 | | |
58 | 58 | | |
59 | | - | |
| 59 | + | |
60 | 60 | | |
61 | 61 | | |
62 | 62 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
18 | | - | |
| 18 | + | |
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1421 | 1421 | | |
1422 | 1422 | | |
1423 | 1423 | | |
1424 | | - | |
| 1424 | + | |
1425 | 1425 | | |
1426 | 1426 | | |
1427 | 1427 | | |
| |||
1438 | 1438 | | |
1439 | 1439 | | |
1440 | 1440 | | |
1441 | | - | |
| 1441 | + | |
1442 | 1442 | | |
1443 | 1443 | | |
1444 | 1444 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1284 | 1284 | | |
1285 | 1285 | | |
1286 | 1286 | | |
| 1287 | + | |
| 1288 | + | |
| 1289 | + | |
| 1290 | + | |
| 1291 | + | |
| 1292 | + | |
| 1293 | + | |
| 1294 | + | |
| 1295 | + | |
| 1296 | + | |
| 1297 | + | |
| 1298 | + | |
| 1299 | + | |
| 1300 | + | |
| 1301 | + | |
| 1302 | + | |
| 1303 | + | |
| 1304 | + | |
| 1305 | + | |
| 1306 | + | |
| 1307 | + | |
| 1308 | + | |
| 1309 | + | |
0 commit comments