mirror of
https://github.com/orange-cpp/omath.git
synced 2026-02-13 07:03:25 +00:00
Uses correct calling convention for virtual methods
Adjusts the virtual method calling convention based on the compiler (_MSC_VER). This ensures compatibility and correct behavior on different platforms.
This commit is contained in:
@@ -26,7 +26,11 @@ namespace omath::rev_eng
|
||||
template<std::size_t id, class ReturnType>
|
||||
ReturnType call_virtual_method(auto... arg_list)
|
||||
{
|
||||
#ifdef _MSC_VER
|
||||
using VirtualMethodType = ReturnType(__thiscall*)(void*, decltype(arg_list)...);
|
||||
#else
|
||||
using VirtualMethodType = ReturnType(__fastcall*)(void*, decltype(arg_list)...);
|
||||
#endif
|
||||
return (*reinterpret_cast<VirtualMethodType**>(this))[id](this, arg_list...);
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user