The deserialize() method would trigger the following warning on GCC <7:
warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] ParamIdx P(*reinterpret_cast<ParamIdx *>(&S)); ^
&S was previously reinterpret_casted from a ParamIdx into a SerialType,
it is therefore safe to cast back into a ParamIdx. Similar to what was
done in D50608, we replace it with two static_cast via void * which
silences the warning and presumably makes GCC understand that no
strict-aliasing violation is happening.
No functional change intended.