VCCC  2024.05
VisualCamp Common C++ library
concepts

Concepts. More...

Detailed Description

Implementation of concepts is impossible without language features of C++20. struct based implementations (type_traits like) is conducted instead.

Note: Subsume is impossible without using actual concept.

Modules

 assignable_from
 specifies that a type is assignable from another type
 
 boolean_testable
 specifies that a type can be used in Boolean contexts
 
 convertible_to
 specifies that a type is implicitly convertible to another type
 
 derived_from
 specifies that a type is derived from another type
 
 implicit_expression_check
 helper class for implementing implicit expression variations
 
 same_as
 specifies that a type is the same as another type
 

Classes

struct  common_reference_with< T, U >
 specifies that two types share a common reference type More...
 
struct  common_with< T, U >
 specifies that two types share a common type More...
 
struct  comparison_common_type_with< T, U >
 specifies that two types share a common type, and a const lvalue or a non-const rvalue of either type is convertible to that common type. More...
 
struct  constructible_from< T, Args >
 specifies that a variable of the type can be constructed from or bound to a set of argument types More...
 
struct  copy_constructible< T >
 specifies that an object of a type can be copy constructed and move constructed More...
 
struct  copyable< T >
 specifies that an object of a type can be copied, moved, and swapped More...
 
struct  default_initializable< T >
 specifies that an object of a type can be default constructed More...
 
struct  dereferenceable< T >
 specifies that an object of a type can be dereferenced More...
 
struct  derived_from_single_crtp< Derived, Base >
 specifies that a type is derived from single specialization of CRTP base More...
 
struct  destructible< T >
 specifies that an object of the type can be destroyed More...
 
struct  different_from< Test, From >
 
struct  different_from_this< Test,... >
 
struct  different_from_this< Test, T >
 
struct  equality_comparable< T >
 specifies that operator == is an equivalence relation More...
 
struct  equality_comparable_with< T, U >
 specifies that operator == is an equivalence relation More...
 
struct  equivalence_relation< R, T, U >
 specifies that a relation imposes an equivalence relation More...
 
struct  invocable< F, Args >
 specifies that a callable type can be invoked with a given set of argument types More...
 
struct  regular_invocable< F, Args >
 specifies that a callable type can be invoked with a given set of argument types More...
 
struct  movable< T >
 specifies that an object of a type can be moved and swapped More...
 
struct  partially_ordered_with< T, U >
 
struct  predicate< F, Args >
 specifies that a callable type is a Boolean predicate More...
 
struct  regular< T >
 specifies that a type is regular, that is, it is both semiregular and equality_comparable More...
 
struct  relation< R, T, U >
 specifies that a callable type is a binary relation More...
 
struct  semiregular< T >
 specifies that an object of a type can be copied, moved, swapped, and default constructed More...
 
struct  strict_weak_order< R, T, U >
 specifies that a relation imposes a strict weak ordering More...
 
struct  subtractable< T >
 
struct  swappable< T >
 specifies that a type can be swapped or that two types can be swapped with each other More...
 
struct  swappable_with< T, U >
 specifies that a type can be swapped or that two types can be swapped with each other More...
 
struct  totally_ordered< T >
 specifies that the comparison operators on the type yield a total order More...
 
struct  totally_ordered_with< T, U >
 specifies that the comparison operators on the type yield a total order More...
 
struct  ValueSwappable< I1, I2 >
 
struct  weakly_equality_comparable_with< T, U >
 specifies that two different objects can be compared for equality with each other (in either order) using both == and != More...
 

Variables

constexpr VCCC_INLINE_OR_STATIC detail_ranges_swap::swap_niebloid swap {}
 swaps the values of two objects More...
 

Variable Documentation

◆ swap

Exchanges the values referenced by t and u.

vccc::ranges::swap is a niebloid.

See also
std::ranges::swap
swappable
swappable_with