mirror of
https://github.com/holub/mame
synced 2025-07-03 17:08:39 +03:00
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:
parent
b33b81b4d2
commit
adee79cf84
@ -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)
|
if (MAME_ABI_CXX_TYPE == MAME_ABI_CXX_ITANIUM)
|
||||||
{
|
{
|
||||||
struct { uintptr_t ptr; ptrdiff_t adj; } equiv;
|
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;
|
*reinterpret_cast<decltype(function) *>(&equiv) = function;
|
||||||
return detail::resolve_member_function_itanium(equiv.ptr, equiv.adj, object);
|
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)
|
if (MAME_ABI_CXX_TYPE == MAME_ABI_CXX_ITANIUM)
|
||||||
{
|
{
|
||||||
struct { std::uintptr_t ptr; std::ptrdiff_t adj; } equiv;
|
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;
|
*reinterpret_cast<decltype(function) *>(&equiv) = function;
|
||||||
return detail::resolve_member_function_itanium(equiv.ptr, equiv.adj, object);
|
return detail::resolve_member_function_itanium(equiv.ptr, equiv.adj, object);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user