Что тут не так? typedef void (*fff)(); (reinterpret_cast<fff>(reinterpret_cast<void*>(malloc(1337))))();
Вообщем, нельзя преобразовывать указатель к типу. Но исключение для int. int* можно преобразовывать к int. То есть reinterpret_cast <int> (int*) работает, а reinterpret_cast <double> (double*) не работает.
typedef void (fff)(); (reinterpret_cast<fff>(reinterpret_cast<void>(malloc(1337))))(); это корректный код