util/mfpresolve.h: Fix build with MSVC ABI.

All ABI paths must be valid C++ - can't use a static assertion.
This commit is contained in:
Vas Crabb 2025-01-14 12:57:19 +11:00 committed by GitHub
parent b33b81b4d2
commit adee79cf84
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -46,8 +46,8 @@ inline std::pair<std::uintptr_t, std::uintptr_t> resolve_member_function(Ret (T:
{
if (MAME_ABI_CXX_TYPE == MAME_ABI_CXX_ITANIUM)
{
struct { uintptr_t ptr; ptrdiff_t adj; } equiv;
static_assert(sizeof(function) == sizeof(equiv));
struct { std::uintptr_t ptr; std::ptrdiff_t adj; } equiv;
assert(sizeof(function) == sizeof(equiv));
*reinterpret_cast<decltype(function) *>(&equiv) = function;
return detail::resolve_member_function_itanium(equiv.ptr, equiv.adj, object);
}
@ -68,7 +68,7 @@ inline std::pair<std::uintptr_t, std::uintptr_t> resolve_member_function(Ret (T:
if (MAME_ABI_CXX_TYPE == MAME_ABI_CXX_ITANIUM)
{
struct { std::uintptr_t ptr; std::ptrdiff_t adj; } equiv;
static_assert(sizeof(function) == sizeof(equiv));
assert(sizeof(function) == sizeof(equiv));
*reinterpret_cast<decltype(function) *>(&equiv) = function;
return detail::resolve_member_function_itanium(equiv.ptr, equiv.adj, object);
}