concepts.hpp File Reference

## Classes

struct | ranges::v3::concepts::Assignable
struct | ranges::v3::concepts::Common
struct | ranges::v3::concepts::CommonReference
struct | ranges::v3::concepts::Constructible
struct | ranges::v3::concepts::ConvertibleTo
struct | ranges::v3::concepts::Copyable
struct | ranges::v3::concepts::CopyConstructible
struct | ranges::v3::concepts::DefaultConstructible
struct | ranges::v3::concepts::DerivedFrom
struct | ranges::v3::concepts::Destructible
struct | ranges::v3::concepts::EqualityComparable
struct | ranges::v3::concepts::Integral
struct | ranges::v3::concepts::models< Concept, Ts >
struct | ranges::v3::concepts::models< Concept(Args...), Ts... >
struct | ranges::v3::concepts::most_refined< Concepts, Ts >
struct | ranges::v3::concepts::Movable
struct | ranges::v3::concepts::MoveConstructible
struct | ranges::v3::concepts::refines< Concepts >
struct | ranges::v3::concepts::Regular
struct | ranges::v3::concepts::Same
struct | ranges::v3::concepts::Same::same< Ts >
struct | ranges::v3::concepts::Same::same< T, Us... >
struct | ranges::v3::concepts::SemiRegular
struct | ranges::v3::concepts::SignedIntegral
struct | ranges::v3::concepts::Swappable
struct | ranges::v3::concepts::TotallyOrdered
struct | ranges::v3::concepts::UnsignedIntegral
struct | ranges::v3::concepts::WeaklyEqualityComparable
struct | ranges::v3::concepts::WeaklyOrdered

## Macros

#define | CONCEPT_ASSERT(...) static_assert((__VA_ARGS__), "Concept check failed: " #__VA_ARGS__)
#define | CONCEPT_ASSERT_MSG static_assert
#define | CONCEPT_PP_CAT(X, Y) CONCEPT_PP_CAT_(X, Y)
#define | CONCEPT_PP_CAT_(X, Y) X ## Y
#define | CONCEPT_REQUIRES(...)
#define | CONCEPT_REQUIRES_(...)

## Typedefs

using | ranges::v3::concepts::_1 = std::integral_constant< int, 0 >
using | ranges::v3::concepts::_2 = std::integral_constant< int, 1 >
using | ranges::v3::concepts::_3 = std::integral_constant< int, 2 >
using | ranges::v3::concepts::_4 = std::integral_constant< int, 3 >
using | ranges::v3::concepts::_5 = std::integral_constant< int, 4 >
using | ranges::v3::concepts::_6 = std::integral_constant< int, 5 >
using | ranges::v3::concepts::_7 = std::integral_constant< int, 6 >
using | ranges::v3::concepts::_8 = std::integral_constant< int, 7 >
using | ranges::v3::concepts::_9 = std::integral_constant< int, 8 >
template<typename T , typename U >
using | ranges::v3::Assignable = concepts::models< concepts::Assignable, T, U >
template<typename T , typename U , typename... Rest>
using | ranges::v3::Common = concepts::models< concepts::Common, T, U, Rest... >
template<typename T , typename U , typename... Rest>
using | ranges::v3::CommonReference = concepts::models< concepts::CommonReference, T, U, Rest... >
template<typename T , typename ... Args>
using | ranges::v3::Constructible = concepts::models< concepts::Constructible, T, Args... >
template<typename T , typename U >
using | ranges::v3::ConvertibleTo = concepts::models< concepts::ConvertibleTo, T, U >
template<typename T >
using | ranges::v3::Copyable = concepts::models< concepts::Copyable, T >
template<typename T >
using | ranges::v3::CopyConstructible = concepts::models< concepts::CopyConstructible, T >
template<typename T >
using | ranges::v3::DefaultConstructible = concepts::models< concepts::DefaultConstructible, T >
template<typename T , typename U >
using | ranges::v3::DerivedFrom = concepts::models< concepts::DerivedFrom, T, U >
template<typename T >
using | ranges::v3::Destructible = concepts::models< concepts::Destructible, T >
template<typename T , typename U = T>
using | ranges::v3::EqualityComparable = concepts::models< concepts::EqualityComparable, T, U >
template<typename T , typename U >
using | ranges::v3::ExplicitlyConvertibleTo = concepts::models< concepts::ExplicitlyConvertibleTo, T, U >
template<typename T , typename U >
using | ranges::v3::ImplicitlyConvertibleTo = concepts::models< concepts::ImplicitlyConvertibleTo, T, U >
template<typename T >
using | ranges::v3::Integral = concepts::models< concepts::Integral, T >
template<typename Concepts , typename... Ts>
using | ranges::v3::concepts::most_refined_t = meta::_t< most_refined< Concepts, Ts... > >
template<typename T >
using | ranges::v3::Movable = concepts::models< concepts::Movable, T >
template<typename T >
using | ranges::v3::MoveConstructible = concepts::models< concepts::MoveConstructible, T >
template<typename T >
using | ranges::v3::Regular = concepts::models< concepts::Regular, T >
template<typename ... Ts>
using | ranges::v3::Same = concepts::Same::same_t< Ts... >
template<typename T >
using | ranges::v3::SemiRegular = concepts::models< concepts::SemiRegular, T >
template<typename T >
using | ranges::v3::SignedIntegral = concepts::models< concepts::SignedIntegral, T >
template<typename T , typename U = T>
using | ranges::v3::Swappable = concepts::models< concepts::Swappable, T, U >
template<typename T , typename U = T>
using | ranges::v3::TotallyOrdered = concepts::models< concepts::TotallyOrdered, T, U >
template<typename T >
using | ranges::v3::UnsignedIntegral = concepts::models< concepts::UnsignedIntegral, T >
template<typename T , typename U >
using | ranges::v3::WeaklyEqualityComparable = concepts::models< concepts::WeaklyEqualityComparable, T, U >
template<typename T , typename U = T>
using | ranges::v3::WeaklyOrdered = concepts::models< concepts::WeaklyOrdered, T, U >

## Functions

template<typename T , typename U >
auto | ranges::v3::concepts::convertible_to (U &&u) -> decltype(concepts::returns_< int >(static_cast< T >((U &&) u)))
template<typename T , typename U >
auto | ranges::v3::concepts::has_type (U &&) -> meta::if_< std::is_same< T, U >, int >
template<typename Concept , typename ... Ts>
auto | ranges::v3::concepts::model_of (Ts &&...) -> meta::if_c< concepts::models< Concept, Ts... >::value, int >
template<typename Concept , typename ... Ts>
auto | ranges::v3::concepts::model_of () -> meta::if_c< concepts::models< Concept, Ts... >::value, int >
template<typename Ret , typename T >
Ret | ranges::v3::concepts::returns_ (T const &)