18concept arithmetic =
requires { std::is_arithmetic_v<T>; };
23 { ++value } -> std::common_with<T>;
30 { --value } -> std::common_with<T>;
41 { std::hash<T>{}(value) } -> std::same_as<std::size_t>;
46concept ostreamable =
requires(std::ostream& ostream, T value) {
47 { ostream << value } -> std::same_as<std::ostream&>;
52concept istreamable =
requires(std::istream& istream, T value) {
53 { istream >> value } -> std::same_as<std::istream&>;
58concept named =
requires(T value) {
59 { value.name() } -> std::convertible_to<std::string>;
Concept for arithmetic types.
Definition concepts.hpp:18
Concept for complete types.
Definition concepts.hpp:36
Concept for decrementable types.
Definition concepts.hpp:29
Concept for hashable types.
Definition concepts.hpp:40
Concept for incrementable types.
Definition concepts.hpp:22
Concept for istreamable types.
Definition concepts.hpp:52
Concept for named types.
Definition concepts.hpp:58
Concept for ostreamable types.
Definition concepts.hpp:46
GW namespace.
Definition concepts.hpp:14