gw  1.0.0
A bunch of small C++ utilities
gw Namespace Reference

GW namespace. More...

Classes

struct  crtp
 CRTP base class. More...
 
class  named_type
 Named type wrapper. More...
 
class  strong_type
 Strong type wrapper. More...
 

Variables

template<typename T >
concept arithmetic = requires { std::is_arithmetic_v<T>; }
 Concept for arithmetic types.
 
template<typename T >
concept incrementable
 Concept for incrementable types. More...
 
template<typename T >
concept decrementable
 Concept for decrementable types. More...
 
template<typename T >
concept complete = requires { sizeof(T); }
 Concept for complete types.
 
template<typename T >
concept hashable
 Concept for hashable types. More...
 
template<typename T >
concept ostreamable
 Concept for ostreamable types. More...
 
template<typename T >
concept istreamable
 Concept for istreamable types. More...
 
template<typename T >
concept named
 Concept for named types. More...
 
template<typename T >
concept string_convertable
 Concept for string convertable types. More...
 

Detailed Description

GW namespace.

Variable Documentation

◆ decrementable

template<typename T >
concept gw::decrementable
Initial value:
= requires(T value) {
{ --value } -> std::common_with<T>;
value--;
}

Concept for decrementable types.

◆ hashable

template<typename T >
concept gw::hashable
Initial value:
= requires(T value) {
{ std::hash<T>{}(value) } -> std::same_as<std::size_t>;
}

Concept for hashable types.

◆ incrementable

template<typename T >
concept gw::incrementable
Initial value:
= requires(T value) {
{ ++value } -> std::common_with<T>;
value++;
}

Concept for incrementable types.

◆ istreamable

template<typename T >
concept gw::istreamable
Initial value:
= requires(std::istream& istream, T value) {
{ istream >> value } -> std::same_as<std::istream&>;
}

Concept for istreamable types.

◆ named

template<typename T >
concept gw::named
Initial value:
= requires(T value) {
{ value.name() } -> std::convertible_to<std::string>;
}

Concept for named types.

◆ ostreamable

template<typename T >
concept gw::ostreamable
Initial value:
= requires(std::ostream& ostream, T value) {
{ ostream << value } -> std::same_as<std::ostream&>;
}

Concept for ostreamable types.

◆ string_convertable

template<typename T >
concept gw::string_convertable
Initial value:
= requires(T value) {
{ std::to_string(value) } -> std::same_as<std::string>;
}

Concept for string convertable types.