Annex C (informative)
Compatibility
[diff]
C.2
C++ and ISO C++ 2020
[diff.cpp20]
C.2.3
[expr]
: expressions
[diff.cpp20.expr]
1
#
Affected subclause:
[expr.
prim.
id.
unqual]
Change:
Change move-eligible
id-expression
s
from lvalues to xvalues
.
Rationale:
Simplify the rules for implicit move
.
Effect on original feature:
Valid C++ 2020 code that relies on a returned
id-expression
's being an lvalue may change behavior or fail to compile
.
[
Example
1
:
decltype
(
auto
)
f
(
int
&
&
x
)
{
return
(
x
)
;
}
// returns
int&&
; previously returned
int&
int
&
g
(
int
&
&
x
)
{
return
x;
}
// ill-formed; previously well-formed
—
end example
]
2
#
Affected subclause:
[expr.
sub]
Change:
Change the meaning of comma in subscript expressions
.
Rationale:
Enable repurposing a deprecated syntax to support multidimensional indexing
.
Effect on original feature:
Valid C++ 2020 code that uses a comma expression within a subscript expression may fail to compile
.
[
Example
2
:
arr
[
1
,
2
]
// was equivalent to
arr[(1, 2)]
,
// now equivalent to
arr.operator[](1, 2)
or ill-formed
—
end example
]