eswitch-v5
Advanced counterpart for switch statement in C++
Concepts

Description

Variables

template<typename T >
concept eswitch_v5::Callable = details::is_callable_v< T >
 
template<typename T >
concept eswitch_v5::ComparableExceptAnyAndVariant
 
template<typename T >
concept eswitch_v5::Condition
 
template<typename T >
concept eswitch_v5::has_type = requires{ typename T::type; }
 
template<typename T >
concept eswitch_v5::has_value = requires{ T::value; }
 
template<typename T >
concept eswitch_v5::Index = requires( T ){ std::decay_t< T >::eswitch_index; }
 
template<typename T >
concept eswitch_v5::IsCndPredicate = details::is_predicate_v< std::decay_t< T > >
 
template<typename T >
concept eswitch_v5::IsNotCndPredicate = !IsCndPredicate< T >
 
template<typename T >
concept eswitch_v5::NoneIndex = ( Index< T > == false )
 
template<typename T >
concept eswitch_v5::ReturnValueNoneVoid
 
template<typename T >
concept eswitch_v5::StdPair = details::is_std_pair_v< T >
 
template<typename T >
concept eswitch_v5::StdTuple = details::is_std_tuple_v< T >
 

Variable Documentation

◆ Callable

template<typename T >
concept eswitch_v5::Callable = details::is_callable_v< T >

#include <eswitch_v5.hpp>

Definition at line 396 of file eswitch_v5.hpp.

◆ ComparableExceptAnyAndVariant

template<typename T >
concept eswitch_v5::ComparableExceptAnyAndVariant

#include <eswitch_v5.hpp>

Initial value:
=
!details::is_std_any_v< T > ||
!details::is_std_variant_v< T > ||
requires( T a, T b ) {
{ a == b };
{ a != b };
}

Definition at line 376 of file eswitch_v5.hpp.

◆ Condition

template<typename T >
concept eswitch_v5::Condition

#include <eswitch_v5.hpp>

Initial value:
= requires( T t )
{
t( std::make_tuple() );
std::decay_t< T >::template is_out_of_range< std::size_t{} >();
}

Definition at line 39 of file eswitch_v5.hpp.

◆ has_type

template<typename T >
concept eswitch_v5::has_type = requires{ typename T::type; }

#include <eswitch_v5.hpp>

Definition at line 370 of file eswitch_v5.hpp.

◆ has_value

template<typename T >
concept eswitch_v5::has_value = requires{ T::value; }

#include <eswitch_v5.hpp>

Definition at line 373 of file eswitch_v5.hpp.

◆ Index

template<typename T >
concept eswitch_v5::Index = requires( T ){ std::decay_t< T >::eswitch_index; }

#include <eswitch_v5.hpp>

Definition at line 33 of file eswitch_v5.hpp.

◆ IsCndPredicate

template<typename T >
concept eswitch_v5::IsCndPredicate = details::is_predicate_v< std::decay_t< T > >

#include <eswitch_v5.hpp>

Definition at line 390 of file eswitch_v5.hpp.

◆ IsNotCndPredicate

template<typename T >
concept eswitch_v5::IsNotCndPredicate = !IsCndPredicate< T >

#include <eswitch_v5.hpp>

Definition at line 393 of file eswitch_v5.hpp.

◆ NoneIndex

template<typename T >
concept eswitch_v5::NoneIndex = ( Index< T > == false )

#include <eswitch_v5.hpp>

Definition at line 36 of file eswitch_v5.hpp.

◆ ReturnValueNoneVoid

template<typename T >
concept eswitch_v5::ReturnValueNoneVoid

#include <eswitch_v5.hpp>

Initial value:

Definition at line 385 of file eswitch_v5.hpp.

◆ StdPair

template<typename T >
concept eswitch_v5::StdPair = details::is_std_pair_v< T >

#include <eswitch_v5.hpp>

Definition at line 402 of file eswitch_v5.hpp.

◆ StdTuple

template<typename T >
concept eswitch_v5::StdTuple = details::is_std_tuple_v< T >

#include <eswitch_v5.hpp>

Definition at line 399 of file eswitch_v5.hpp.

std::is_same_v
T is_same_v
std::make_tuple
T make_tuple(T... args)
std::decay_t
std::invoke_result_t
std::size_t