Concepts Library


The Concepts library is an extension onto the standard Concepts Library, as well as new useful ones.


Defined in module <cmoon.concepts>

Core Concepts


arithmetic specifies that a type is arithmetic
(concept)
signed_arithmetic specifies that a type is signed arithmetic
(concept)
unsigned_arithmetic specifies that a type is unsigned arithmetic
(concept)
complete_type specifies that a type has a known size
(concept)
has_size specifies that a type where std::size(t) for some type T is valid
(concept)
has_type specifies that a type where typename T::type is valid
(concept)
stream_writable specifies that a type can be used in the stream output operator (operator<<)
(concept)
character specifies that a type is a character
(concept)
string_literal specifies that a type is a string literal
(concept)
formattable specifies that a type where std::format(t) is valid
(concept)
specialization_of specifies that a complete type is a template specialization of an incomplete type
(concept)
decays_to specifies that a type decays from one type to another
(concept)
class_type specifies that a type decays to itself and is a class
(concept)
array specifies that a type is an array
(concept)
movable_value specifies that a type is at minimum movable, but may not be swappable
(concept)

Object Concepts


object specifies that a type is an object
(concept)
function_object specifies that a type is an object and invocable
(concept)

Invocable Concepts


supplier specifies that a type is an invocable that takes zero parameters and returns a non-void value
(concept)
unary_operator specifies that a type is an invocable that takes and returns a non-void value of the same type
(concept)
consumer specifies that a type is an invocable that takes arguments and returns void
(concept)