Range-v3
Range algorithms, views, and actions for the Standard Library
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 &)