Range-v3
Range algorithms, views, and actions for the Standard Library
concepts.hpp File Reference

Classes

struct  concepts::detail::ignore
 
struct  concepts::detail::Nil
 
struct  concepts::detail::tag<... >
 
struct  concepts::return_t_< typename >
 

Namespaces

 concepts
 INTERNAL ONLY.
 

Typedefs

template<bool B>
using concepts::bool_ = std::integral_constant< bool, B >
 
template<typename T , typename EnableIf >
using concepts::return_t = meta::invoke< return_t_< EnableIf >, T >
 
using concepts::detail::xNil = Nil
 

Functions

constexpr bool concepts::detail::CPP_true_fn (Nil)
 
template<typename >
constexpr bool concepts::detail::requires_ ()
 
template<class >
constexpr bool concepts::detail::true_ ()
 

Variables

template<bool... Bs>
constexpr bool concepts::and_v = (Bs &&...)
 
template<typename T , typename U >
concept concepts::assignable_from
 
template<typename T , typename U >
concept concepts::assignable_from__requires_ = CPP_REQUIRES_requires `(T t, U && u) ( t = (U &&) u, requires_<same_as<T, decltype(t = (U &&) u)>> )
 
template<typename T >
concept concepts::detail::boolean_testable_
 
template<typename T >
concept concepts::detail::boolean_testable_frag__requires_ = CPP_REQUIRES_requires `(T && t) ( !(T&&) t, concepts::requires_<boolean_testable_impl_<decltype(!(T&&) t)>> )
 
template<typename T >
concept concepts::detail::boolean_testable_impl_ = convertible_to<T, bool>
 
template<typename T , typename U >
concept concepts::common_reference_with
 
template<typename T , typename U >
concept concepts::common_reference_with__concept_ = same_as<common_reference_t<T, U>, common_reference_t<U, T>> && convertible_to<T, common_reference_t<T, U>> && convertible_to<U, common_reference_t<T, U>>
 
template<typename T , typename U >
concept concepts::common_with
 
template<typename T , typename U >
concept concepts::common_with__concept_ = same_as<common_type_t<T, U>, common_type_t<U, T>> && convertible_to<T, common_type_t<T, U>> && convertible_to<U, common_type_t<T, U>> && common_reference_with< std::add_lvalue_reference_t<T const>, std::add_lvalue_reference_t<U const>> && common_reference_with< std::add_lvalue_reference_t<common_type_t<T, U>>, common_reference_t< std::add_lvalue_reference_t<T const>, std::add_lvalue_reference_t<U const>>>
 
template<typename T , typename... Args>
concept concepts::constructible_from
 
template<typename From , typename To >
concept concepts::convertible_to
 
template<typename T >
concept concepts::copy_assignable__concept_ = assignable_from<T &, T const &>
 
template<typename T >
concept concepts::copy_constructible
 
template<typename T >
concept concepts::copy_constructible__concept_ = constructible_from<T, T &> && constructible_from<T, T const &> && constructible_from<T, T const> && convertible_to<T &, T> && convertible_to<T const &, T> && convertible_to<T const, T>
 
template<typename T >
concept concepts::copyable
 
template<typename T >
concept concepts::default_constructible
 
template<typename T , typename U >
concept concepts::derived_from
 
template<typename T , typename U >
concept concepts::derived_from__concept_ = convertible_to<T const volatile *, U const volatile *>
 
template<typename T >
concept concepts::destructible
 
template<typename T >
concept concepts::equality_comparable
 
template<typename T , typename U >
concept concepts::equality_comparable_with
 
template<typename T , typename U >
concept concepts::equality_comparable_with__concept_ = equality_comparable< common_reference_t<detail::as_cref_t<T>, detail::as_cref_t<U>>>
 
template<typename T >
constexpr T concepts::detail::instance_ = T{}
 
template<typename T >
concept concepts::integral
 
template<bool B>
concept concepts::is_true = B
 
template<typename T >
concept concepts::movable
 
template<typename T >
concept concepts::move_assignable__concept_ = assignable_from<T &, T>
 
template<typename T >
concept concepts::move_constructible
 
template<bool... Bs>
constexpr bool concepts::or_v = (Bs ||...)
 
template<typename T , typename U >
concept concepts::detail::partially_ordered_with_
 
template<typename T , typename U >
concept concepts::detail::partially_ordered_with_frag__requires_ = CPP_REQUIRES_requires `(detail::as_cref_t<T>& t, detail::as_cref_t<U>& u) ( concepts::requires_<boolean_testable_<decltype(t < u)>>, concepts::requires_<boolean_testable_<decltype(t > u)>>, concepts::requires_<boolean_testable_<decltype(t <= u)>>, concepts::requires_<boolean_testable_<decltype(t >= u)>>, concepts::requires_<boolean_testable_<decltype(u < t)>>, concepts::requires_<boolean_testable_<decltype(u > t)>>, concepts::requires_<boolean_testable_<decltype(u <= t)>>, concepts::requires_<boolean_testable_<decltype(u >= t)>> )
 
template<typename T >
concept concepts::regular
 
template<bool B>
constexpr std::enable_if_t< B, intconcepts::requires_ = 0
 
template<typename A , typename B >
concept concepts::same_as
 
template<class T , template< typename... > class Trait, typename... Args>
concept concepts::satisfies
 
template<typename T >
concept concepts::semiregular
 
template<typename T >
concept concepts::signed_integral
 
template<typename T >
concept concepts::swappable
 
template<typename T >
concept concepts::swappable__requires_ = CPP_REQUIRES_requires `(T & t, T & u) ( concepts::swap(t, u) )
 
template<typename T , typename U >
concept concepts::swappable_with
 
template<typename T , typename U >
concept concepts::swappable_with__requires_ = CPP_REQUIRES_requires `(T && t, U && u) ( concepts::swap((T &&) t, (T &&) t), concepts::swap((U &&) u, (U &&) u), concepts::swap((U &&) u, (T &&) t), concepts::swap((T &&) t, (U &&) u) )
 
template<typename T >
concept concepts::totally_ordered
 
template<typename T , typename U >
concept concepts::totally_ordered_with
 
template<typename T , typename U >
concept concepts::totally_ordered_with__concept_ = totally_ordered< common_reference_t< detail::as_cref_t<T>, detail::as_cref_t<U>>> && detail::partially_ordered_with_<T, U>
 
template<typename... Args>
concept concepts::type = true
 
template<typename T >
concept concepts::unsigned_integral
 
template<typename T , typename U >
concept concepts::detail::weakly_equality_comparable_with_
 
template<typename T , typename U >
concept concepts::detail::weakly_equality_comparable_with_frag__requires_ = CPP_REQUIRES_requires `(detail::as_cref_t<T> t, detail::as_cref_t<U> u) ( concepts::requires_<boolean_testable_<decltype(t == u)>>, concepts::requires_<boolean_testable_<decltype(t != u)>>, concepts::requires_<boolean_testable_<decltype(u == t)>>, concepts::requires_<boolean_testable_<decltype(u != t)>> )
 

Variable Documentation

◆ boolean_testable_

template<typename T >
concept concepts::detail::boolean_testable_
Initial value:
=
boolean_testable_frag__requires_<T> &&
boolean_testable_impl_<T>

◆ partially_ordered_with_

template<typename T , typename U >
concept concepts::detail::partially_ordered_with_
Initial value:
=
partially_ordered_with_frag__requires_<T, U>

◆ weakly_equality_comparable_with_

template<typename T , typename U >
concept concepts::detail::weakly_equality_comparable_with_
Initial value:
=
weakly_equality_comparable_with_frag__requires_<T, U>