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