これは、すべてのタイプのキャストに使用できると思いますreinterpret_cast。これは、この変換のすべての副作用を伴う別のタイプへのキャストを強制するためです。
それはよくある誤解です。で実行できる変換reinterpret_castは、標準の5.2.10に明示的にリストされています。int-to-enumおよびenum-to-int変換はリストにありません:
- 整数がそれを保持するのに十分な大きさである限り、整数型へのポインタ
nullptr_t整数に
- 整数型または
enumポインタへ
- 異なるタイプの別の関数ポインタへの関数ポインタ
- 異なるタイプの別のオブジェクトポインタへのオブジェクトポインタ
nullptr_t他のポインタタイプへ
- との両方がオブジェクトまたは関数である場合
T1の、の別のメンバーへのポインターへのポインターT2T1T2
reinterpret_cast通常、コンパイラに通知するために使用されます。ねえ、メモリのこの領域はであると思いますが、 (とは無関係のタイプである)Tとして解釈してください。UTU
reinterpret_castビットに影響を与える可能性があることも注目に値します。
5.2.10.3
[注:reinterpret_castによって実行されるマッピングは、元の値とは異なる表現を生成する場合と生成しない場合があります。—エンドノート]
Cスタイルのキャストはstatic_cast、その試行に含まれているため、常に機能します。