diff options
author | Lioncash <mathew1800@gmail.com> | 2020-08-07 07:55:50 -0400 |
---|---|---|
committer | Lioncash <mathew1800@gmail.com> | 2020-08-07 08:09:57 -0400 |
commit | 8e86fa7e6033d7d65c781eb332d5d750f7ef4e26 (patch) | |
tree | 8c22b7d574b92de9077dc9c0e1d05fa2947b34b5 /src/common/concepts.h | |
parent | f5d538f118b4b25237a0d0234a51fcb815ca98d1 (diff) |
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.
Diffstat (limited to 'src/common/concepts.h')
-rw-r--r-- | src/common/concepts.h | 10 |
1 files changed, 6 insertions, 4 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 <typename T, typename T2> -concept IsBaseOf = requires { - std::is_base_of_v<T, T2>; +// TODO: Replace with std::derived_from when the <concepts> header +// is available on all supported platforms. +template <typename Derived, typename Base> +concept DerivedFrom = requires { + std::is_base_of_v<Base, Derived>; + std::is_convertible_v<const volatile Derived*, const volatile Base*>; }; } // namespace Common |