ORIGINAL
Loading...
Searching...
No Matches
types.h
1#ifndef TYPES_H
2#define TYPES_H
3
4#include "type_traits"
5#include <concepts>
6
7namespace original{
8 template <typename TYPE>
9 concept Comparable = requires(const TYPE& t1, const TYPE& t2) {
10 { t1 == t2 } -> std::same_as<bool>;
11 { t1 != t2 } -> std::same_as<bool>;
12 { t1 < t2 } -> std::same_as<bool>;
13 { t1 <= t2 } -> std::same_as<bool>;
14 { t1 > t2 } -> std::same_as<bool>;
15 { t1 >= t2 } -> std::same_as<bool>;
16 };
17
18 template <typename Callback, typename ReturnType, typename... Args>
19 concept CallbackOf = requires(Callback callback, Args&&... args){
20 { callback(std::forward<Args>(args)...) } -> std::same_as<ReturnType>;
21 };
22
23 template <typename Callback, typename TYPE>
24 concept Compare =
26
27 template <typename Callback, typename TYPE>
29
30 template <typename Callback, typename TYPE>
32
33 template <typename Base, typename Derive>
34 concept SuperOf = std::is_base_of_v<Base, Derive> || std::is_same_v<Base, Derive>;
35
36 template <typename Base, typename Derive>
37 concept ExtendsOf = std::derived_from<Derive, Base> || std::is_same_v<Base, Derive>;
38}
39
40#endif //TYPES_H
Definition types.h:19
Definition types.h:9
Definition types.h:24
Definition types.h:28
Definition types.h:37
Definition types.h:31
Definition types.h:34