mirror of
https://github.com/mamedev/mame.git
synced 2024-11-16 07:48:32 +01:00
libc++ 6 std::is_invocable_r doesn't work on MFP for incomplete class - disable broken tests when detected.
This commit is contained in:
parent
efdb9a072f
commit
e82c6cb977
1 changed files with 6 additions and 2 deletions
|
@ -47,10 +47,12 @@ using test_delegate = delegate<char (void const *&)>;
|
|||
// type
|
||||
//-------------------------------------------------
|
||||
|
||||
#if !defined(_LIBCPP_VERSION) || (_LIBCPP_VERSION >= 7000)
|
||||
test_delegate make_diamond_class_delegate(char (diamond_inheritance::*func)(void const *&), diamond_inheritance *obj)
|
||||
{
|
||||
return test_delegate(func, obj);
|
||||
}
|
||||
#endif // !defined(_LIBCPP_VERSION) || (_LIBCPP_VERSION >= 7000)
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
|
@ -1391,6 +1393,7 @@ void validate_delegates_mfp()
|
|||
if (&o != addr)
|
||||
osd_printf_error("Error testing delegate this pointer adjustment for virtual member function through base class pointer %p -> %p (expected %p)\n", static_cast<void const *>(static_cast<base_b *>(&o)), addr, static_cast<void const *>(&o));
|
||||
|
||||
#if !defined(_LIBCPP_VERSION) || (_LIBCPP_VERSION >= 7000)
|
||||
// test creating delegates for a forward-declared class
|
||||
cb1 = make_diamond_class_delegate(&diamond_inheritance::get_derived_a, &d);
|
||||
cb2 = make_diamond_class_delegate(&diamond_inheritance::get_derived_b, &d);
|
||||
|
@ -1409,8 +1412,8 @@ void validate_delegates_mfp()
|
|||
if (static_cast<virtual_derived_b *>(&d) != addr)
|
||||
osd_printf_error("Error testing delegate this pointer adjustment for incomplete class %p -> %p (expected %p)\n", static_cast<void const *>(&d), addr, static_cast<void const *>(static_cast<virtual_derived_b *>(&d)));
|
||||
|
||||
// test MSVC extension allowing casting member pointer types across virtual inheritance relationships
|
||||
#if defined(_MSC_VER) && !defined(__clang__)
|
||||
// test MSVC extension allowing casting member pointer types across virtual inheritance relationships
|
||||
cb1 = make_diamond_class_delegate(&diamond_inheritance::get_base, &d);
|
||||
|
||||
addr = nullptr;
|
||||
|
@ -1419,7 +1422,8 @@ void validate_delegates_mfp()
|
|||
osd_printf_error("Error testing delegate non-virtual member function dispatch for incomplete class\n");
|
||||
if (static_cast<virtual_base *>(&d) != addr)
|
||||
osd_printf_error("Error testing delegate this pointer adjustment for incomplete class %p -> %p (expected %p)\n", static_cast<void const *>(&d), addr, static_cast<void const *>(static_cast<virtual_base *>(&d)));
|
||||
#endif // defined(_MSC_VER)
|
||||
#endif // defined(_MSC_VER) && !defined(__clang__)
|
||||
#endif // !defined(_LIBCPP_VERSION) || (_LIBCPP_VERSION >= 7000)
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue