じゃあ説明してやる。

reinterpret_castにできること。

・ポインター型と整数型の間の型変換
int *型からintとか、int型からint *など。

・異なるポインター型の間の型変換
int *からfloat *とか。

・異なる参照型の間の型変換
int &からfloat &とか。

・異なるメンバーポインターの間の型変換
説明が面倒なのでコード例

struct A { int value ; } ;
struct B { int value ; } ;
int B::* ptr = reinterpret_cast<int B::*>(&A::value) ;

・異なる関数ポインター型の間の型変換
これも説明が面倒なのでコード例

void f(int) {}
void (*ptr)(short) = reinterpret_cast<type>(&f) ;

これ以外の型変換はできない。