diff --git a/Source/Core/DiscIO/WIABlob.h b/Source/Core/DiscIO/WIABlob.h index cb27b5d711..88db70a210 100644 --- a/Source/Core/DiscIO/WIABlob.h +++ b/Source/Core/DiscIO/WIABlob.h @@ -240,27 +240,26 @@ private: struct ReuseID { - // This code is a workaround for an ICE in Visual Studio 16.10.0 when making an ARM64 Release - // build. Once a fixed version of Visual Studio is released, we can use std::tie instead. -#define COMPARE_REUSE_ID_INNER(op, f, next) ((f != other.f) ? (f op other.f) : (next)) -#define COMPARE_REUSE_ID(op, equal_result) \ - COMPARE_REUSE_ID_INNER( \ - op, partition_key, \ - COMPARE_REUSE_ID_INNER( \ - op, data_size, \ - COMPARE_REUSE_ID_INNER(op, encrypted, COMPARE_REUSE_ID_INNER(op, value, equal_result)))) - - bool operator==(const ReuseID& other) const { return COMPARE_REUSE_ID(==, true); } - bool operator<(const ReuseID& other) const { return COMPARE_REUSE_ID(<, false); } - bool operator>(const ReuseID& other) const { return COMPARE_REUSE_ID(>, false); } + bool operator==(const ReuseID& other) const + { + return std::tie(partition_key, data_size, encrypted, value) == + std::tie(other.partition_key, other.data_size, other.encrypted, other.value); + } + bool operator<(const ReuseID& other) const + { + return std::tie(partition_key, data_size, encrypted, value) < + std::tie(other.partition_key, other.data_size, other.encrypted, other.value); + } + bool operator>(const ReuseID& other) const + { + return std::tie(partition_key, data_size, encrypted, value) > + std::tie(other.partition_key, other.data_size, other.encrypted, other.value); + } bool operator!=(const ReuseID& other) const { return !operator==(other); } bool operator>=(const ReuseID& other) const { return !operator<(other); } bool operator<=(const ReuseID& other) const { return !operator>(other); } -#undef COMPARE_REUSE_ID_INNER -#undef COMPARE_REUSE_ID - WiiKey partition_key; u64 data_size; bool encrypted;