tests: use function pointers in the concurrent backing read pairs (#1163)
TestConcurrentBackingReads (7e011fa5) builds its reader pairs with
std::pair {TryReadBacking, TryReadSparseBacking}. Class template argument
deduction then also considers pair's const T1& / const T2& constructors, which
deduce function types, and libstdc++ and libc++ reject a pair member of
function type ("data member instantiated with function type"), so
virtual_memory_allocation_tests no longer compiles on Linux and macOS. MSVC's
library accepts it, which is why Windows still builds.
Take the functions' addresses so the pairs hold function pointers.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
45b6d2c597
commit
c3a12397b0
|
|
@ -617,9 +617,9 @@ void TestConcurrentBackingReads() {
|
|||
using namespace Libs::LibKernel::Memory;
|
||||
const char* test = "ConcurrentBackingReads";
|
||||
constexpr uint64_t original = 0x123456789abcdef0ull;
|
||||
for (const auto& readers: {std::pair {TryReadBacking, TryReadBacking},
|
||||
std::pair {TryReadBacking, TryReadSparseBacking},
|
||||
std::pair {TryReadSparseBacking, TryReadSparseBacking}}) {
|
||||
for (const auto& readers: {std::pair {&TryReadBacking, &TryReadBacking},
|
||||
std::pair {&TryReadBacking, &TryReadSparseBacking},
|
||||
std::pair {&TryReadSparseBacking, &TryReadSparseBacking}}) {
|
||||
const auto base = MapNamedFlexible(test, SceKernelPageSize, SceKernelProtCpuRw,
|
||||
"concurrent_backing_reads");
|
||||
std::memcpy(reinterpret_cast<void*>(base), &original, sizeof(original));
|
||||
|
|
|
|||
Loading…
Reference in New Issue