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