Description
[expr.reinterpret.cast] p2 says
An expression of integral, enumeration, pointer, or pointer-to-member type can be explicitly converted to its own type; such a cast yields the value of its operand.
What does "its own type" mean? Does it mean the identical original type or something else? Consider this example:
reinterpret_cast<int>(10);
reinterpret_cast<int const>(10);
reinterpret_cast<int volatile>(10);
reinterpret_cast<int const volatile>(10);
Both GCC and Clang accept this example. I think such a conversion is intended to be regulated by [expr.reinterpret.cast] p2. Because p1 says
Conversions that can be performed explicitly using reinterpret_cast are listed below. No other conversion can be performed explicitly using reinterpret_cast.
Except that p2 might be relevant to this example, all other rules are irrelevant to the above example. It is necessary to clarify what "its own type" means. Presumably, it means
An expression of integral, enumeration, pointer, or pointer-to-member type can be explicitly converted to the cv-unqualified version or cv-qualification of that type.
Activity
JohelEGP commentedon Jun 7, 2022
How about
xmh0511 commentedon Jun 7, 2022
Looks good and is concise.
frederick-vs-ja commentedon May 22, 2025
It seem better to me to specify that if the target type of an explicit cast expression is a scalar or cv
void
, the top-level cv-qualification is removed first (rather than after the cast). Then only cv-unqualified scalar prvalue will be converted to cv-unqualified target types here, which is perfectly fine.