|
|
|
@ -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 |