summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2020-12-30 01:50:20 +0100
committerGitHub <noreply@github.com>2020-12-30 01:50:20 +0100
commit85cfd96f62177338de78d5ca6d7fa4eda0a3728b (patch)
treef36be5e67a3496534fa579e6edeb25c70529b448
parentMerge pull request #5246 from comex/xx-include (diff)
parentk_priority_queue: Fix concepts use (diff)
downloadyuzu-85cfd96f62177338de78d5ca6d7fa4eda0a3728b.tar
yuzu-85cfd96f62177338de78d5ca6d7fa4eda0a3728b.tar.gz
yuzu-85cfd96f62177338de78d5ca6d7fa4eda0a3728b.tar.bz2
yuzu-85cfd96f62177338de78d5ca6d7fa4eda0a3728b.tar.lz
yuzu-85cfd96f62177338de78d5ca6d7fa4eda0a3728b.tar.xz
yuzu-85cfd96f62177338de78d5ca6d7fa4eda0a3728b.tar.zst
yuzu-85cfd96f62177338de78d5ca6d7fa4eda0a3728b.zip
-rw-r--r--src/common/concepts.h4
-rw-r--r--src/core/hle/kernel/k_priority_queue.h8
2 files changed, 9 insertions, 3 deletions
diff --git a/src/common/concepts.h b/src/common/concepts.h
index 5bef3ad67..aa08065a7 100644
--- a/src/common/concepts.h
+++ b/src/common/concepts.h
@@ -31,4 +31,8 @@ concept DerivedFrom = requires {
std::is_convertible_v<const volatile Derived*, const volatile Base*>;
};
+// TODO: Replace with std::convertible_to when libc++ implements it.
+template <typename From, typename To>
+concept ConvertibleTo = std::is_convertible_v<From, To>;
+
} // namespace Common
diff --git a/src/core/hle/kernel/k_priority_queue.h b/src/core/hle/kernel/k_priority_queue.h
index 01a577d0c..99fb8fe93 100644
--- a/src/core/hle/kernel/k_priority_queue.h
+++ b/src/core/hle/kernel/k_priority_queue.h
@@ -8,11 +8,13 @@
#pragma once
#include <array>
+#include <concepts>
#include "common/assert.h"
#include "common/bit_set.h"
#include "common/bit_util.h"
#include "common/common_types.h"
+#include "common/concepts.h"
namespace Kernel {
@@ -21,7 +23,7 @@ class Thread;
template <typename T>
concept KPriorityQueueAffinityMask = !std::is_reference_v<T> && requires(T & t) {
{ t.GetAffinityMask() }
- ->std::convertible_to<u64>;
+ ->Common::ConvertibleTo<u64>;
{t.SetAffinityMask(std::declval<u64>())};
{ t.GetAffinity(std::declval<int32_t>()) }
@@ -48,9 +50,9 @@ concept KPriorityQueueMember = !std::is_reference_v<T> && requires(T & t) {
->KPriorityQueueAffinityMask;
{ t.GetActiveCore() }
- ->std::convertible_to<s32>;
+ ->Common::ConvertibleTo<s32>;
{ t.GetPriority() }
- ->std::convertible_to<s32>;
+ ->Common::ConvertibleTo<s32>;
};
template <typename Member, size_t _NumCores, int LowestPriority, int HighestPriority>