maomao90's Library
A C++20 library for competitive programming.
Loading...
Searching...
No Matches
concepts.hpp
Go to the documentation of this file.
1#pragma once
2
4
6using namespace std;
7template <typename T>
8concept broadly_integral = internal::type_traits::is_broadly_integral_v<T>;
9
10template <typename T>
12 internal::type_traits::is_broadly_signed_integral_v<T>;
13
14template <typename T>
16 internal::type_traits::is_broadly_unsigned_integral_v<T>;
17
18template <typename T>
19concept Addable = requires(T a) {
20 a + a;
21 a += a;
22};
23template <typename T>
24concept Subtractable = requires(T a) {
25 a - a;
26 a -= a;
27};
28template <typename T>
29concept Multipliable = requires(T a) {
30 a * a;
31 a *= a;
32};
33template <typename T>
34concept Dividable = requires(T a) {
35 a / a;
36 a /= a;
37};
38
39template <typename T>
40concept Iterable = requires(T &t) {
41 begin(t) != end(t);
42 ++std::declval<decltype(begin(t)) &>();
43 *begin(t);
44};
45} // namespace maomao90::internal::concepts
Definition concepts.hpp:19
Definition concepts.hpp:34
Definition concepts.hpp:40
Definition concepts.hpp:5