From 8e86fa7e6033d7d65c781eb332d5d750f7ef4e26 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Fri, 7 Aug 2020 07:55:50 -0400 Subject: [PATCH] common/concepts: Rename IsBaseOf to DerivedFrom This makes it more inline with its currently unavailable standardized analogue std::derived_from. While we're at it, we can also make the template match the requirements of the standardized variant as well. --- src/common/concepts.h | 10 ++++++---- src/core/hle/service/sm/sm.h | 2 +- src/core/loader/loader.cpp | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/common/concepts.h b/src/common/concepts.h index db5fb373d9..54252e7786 100644 --- a/src/common/concepts.h +++ b/src/common/concepts.h @@ -23,10 +23,12 @@ concept IsSTLContainer = requires(T t) { t.size(); }; -// Check if type T is derived from T2 -template -concept IsBaseOf = requires { - std::is_base_of_v; +// TODO: Replace with std::derived_from when the header +// is available on all supported platforms. +template +concept DerivedFrom = requires { + std::is_base_of_v; + std::is_convertible_v; }; } // namespace Common diff --git a/src/core/hle/service/sm/sm.h b/src/core/hle/service/sm/sm.h index b526a94fe0..aabf166b74 100644 --- a/src/core/hle/service/sm/sm.h +++ b/src/core/hle/service/sm/sm.h @@ -57,7 +57,7 @@ public: ResultVal> GetServicePort(const std::string& name); ResultVal> ConnectToService(const std::string& name); - template T> + template T> std::shared_ptr GetService(const std::string& service_name) const { auto service = registered_services.find(service_name); if (service == registered_services.end()) { diff --git a/src/core/loader/loader.cpp b/src/core/loader/loader.cpp index b8f8f14486..7c48e55e19 100644 --- a/src/core/loader/loader.cpp +++ b/src/core/loader/loader.cpp @@ -25,7 +25,7 @@ namespace Loader { namespace { -template T> +template T> std::optional IdentifyFileLoader(FileSys::VirtualFile file) { const auto file_type = T::IdentifyType(file); if (file_type != FileType::Error) {