Нельзя привести указатель функции к void*
с помощью static_cast
, но вы можете сделать это с помощью reinterpret_cast
.
Это с условной поддержкой с помощью семантика , определяемая реализацией, за исключением того, что приведение к исходному типу указателя на функцию приводит к тому же значению указателя, так что его можно использовать снова для вызова функции.
Возможно, вам не разрешено чтобы сделать что-то еще с void*
, полученным таким способом, но вам нужно будет посмотреть документацию компилятора, чтобы определить это. (Компиляторы должны документировать поведение, определяемое реализацией, но зачастую оно не выполняется должным образом или вовсе.)
Особенно в системах POSIX, и Windows это приведение всегда поддерживается.