1#ifndef TATOOINE_CONCEPTS_H
2#define TATOOINE_CONCEPTS_H
14template <
typename T0,
typename T1>
17template <
typename T,
typename... Ts>
38template <
typename From,
typename To>
41template <
typename From>
46template <
typename From>
84concept range = std::ranges::range<T>;
97template <
typename T,
typename S>
108template <
typename T,
typename... Ss>
120template <
typename F,
typename... Args>
123template <
typename F,
typename... Args>
126template <
typename F,
typename... Args>
132 { T::num_dimensions() } -> std::convertible_to<std::size_t>;
139 } -> std::convertible_to<std::size_t>;
142template <
typename F,
typename... Is>
148template <
typename Reader,
typename Readable>
150 requires(Reader reader, Readable readable) { reader.read(readable); };
156concept has_pos_type =
requires {
typename std::decay_t<T>::pos_type; };
164 std::decay_t<T>::num_dimensions()
Definition: concepts.h:36
Definition: concepts.h:87
Definition: concepts.h:33
Definition: concepts.h:81
Definition: concepts.h:149
Definition: concepts.h:42
Definition: concepts.h:47
Definition: concepts.h:39
Definition: concepts.h:18
Definition: concepts.h:94
Definition: concepts.h:30
Definition: concepts.h:78
Definition: concepts.h:61
Definition: concepts.h:67
Definition: concepts.h:73
Definition: concepts.h:58
Definition: concepts.h:70
Definition: concepts.h:64
Definition: concepts.h:162
Definition: concepts.h:156
Definition: concepts.h:153
Definition: concepts.h:130
Definition: concepts.h:136
Definition: concepts.h:159
Definition: concepts.h:115
Definition: concepts.h:105
Definition: concepts.h:101
Definition: concepts.h:91
Definition: concepts.h:21
Definition: concepts.h:143
Definition: concepts.h:121
Definition: concepts.h:109
Definition: concepts.h:98
Definition: concepts.h:84
Definition: concepts.h:124
Definition: concepts.h:15
Definition: concepts.h:24
Definition: concepts.h:27
Definition: algorithm.h:6
std::invoke_result_t< F, Args... > invoke_result
Definition: concepts.h:127