diff options
author | David <25727384+ogniK5377@users.noreply.github.com> | 2020-08-03 13:28:54 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-03 13:28:54 +0200 |
commit | 9b75481755c8d566bc666465d659115bba2b2578 (patch) | |
tree | 309d0ff37c8e68d178b65861abeb3bb0e8387f43 /src/common | |
parent | Merge pull request #4263 from lat9nq/fix-screencaps-2 (diff) | |
download | yuzu-9b75481755c8d566bc666465d659115bba2b2578.tar yuzu-9b75481755c8d566bc666465d659115bba2b2578.tar.gz yuzu-9b75481755c8d566bc666465d659115bba2b2578.tar.bz2 yuzu-9b75481755c8d566bc666465d659115bba2b2578.tar.lz yuzu-9b75481755c8d566bc666465d659115bba2b2578.tar.xz yuzu-9b75481755c8d566bc666465d659115bba2b2578.tar.zst yuzu-9b75481755c8d566bc666465d659115bba2b2578.zip |
Diffstat (limited to '')
-rw-r--r-- | src/common/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/common/concepts.h | 32 |
2 files changed, 33 insertions, 0 deletions
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index d120c8d3d..78c3bfb3b 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -110,6 +110,7 @@ add_library(common STATIC common_funcs.h common_paths.h common_types.h + concepts.h dynamic_library.cpp dynamic_library.h fiber.cpp diff --git a/src/common/concepts.h b/src/common/concepts.h new file mode 100644 index 000000000..db5fb373d --- /dev/null +++ b/src/common/concepts.h @@ -0,0 +1,32 @@ +// Copyright 2020 yuzu emulator team +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +namespace Common { + +#include <type_traits> + +// Check if type is like an STL container +template <typename T> +concept IsSTLContainer = requires(T t) { + typename T::value_type; + typename T::iterator; + typename T::const_iterator; + // TODO(ogniK): Replace below is std::same_as<void> when MSVC supports it. + t.begin(); + t.end(); + t.cbegin(); + t.cend(); + t.data(); + t.size(); +}; + +// Check if type T is derived from T2 +template <typename T, typename T2> +concept IsBaseOf = requires { + std::is_base_of_v<T, T2>; +}; + +} // namespace Common |