ttg::meta Namespace Reference

Namespaces

 detail
 

Classes

struct  is_terminal
 
struct  is_input_terminal
 
struct  is_output_terminal
 
struct  is_output_terminal_tuple
 
struct  is_output_terminal_tuple< std::tuple< Ts... > >
 
struct  decays_to_output_terminal_tuple
 
struct  is_nonconst_lvalue_reference_to_output_terminal_tuple
 
struct  has_member_function_hash
 
struct  has_member_function_hash< T, std::void_t< decltype(std::declval< const T & >().hash())> >
 
struct  has_ttg_hash_specialization
 
struct  has_ttg_hash_specialization< T, ttg::meta::void_t< decltype(std::declval< ttg::hash< T >>()(std::declval< const T & >()))> >
 
struct  is_generic_callable
 
struct  is_generic_callable< Callable, ttg::meta::void_t< boost::callable_traits::args_t< Callable, ttg::typelist > > >
 
struct  candidate_argument_bindings
 
struct  candidate_argument_bindings< T, std::enable_if_t<!std::is_reference_v< T > &&!std::is_void_v< T > > >
 
struct  candidate_argument_bindings< void, void >
 
struct  candidate_argument_bindings< const void, void >
 
struct  nonref_tuple
 
struct  nonref_tuple< std::tuple< Ts... > >
 
struct  tuple_concat
 
struct  tuple_concat< std::tuple< Ts... > >
 
struct  tuple_concat< std::tuple< Ts... >, std::tuple< Us... >, R... >
 
struct  filtered_tuple
 
struct  filtered_tuple< std::tuple< Es... >, Pred >
 
struct  probe_last
 
struct  probe_last< Predicate, Default >
 
struct  probe_last< Predicate, Default, T >
 
struct  probe_last< Predicate, Default, T1, Ts... >
 
struct  probe_last< Predicate, Default, std::tuple< Ts... > >
 
struct  probe_last< Predicate, Default, ttg::typelist< Ts... > >
 
struct  probe_first
 
struct  probe_first< Predicate, Default >
 
struct  probe_first< Predicate, Default, T1, Ts... >
 
struct  probe_first< Predicate, Default, std::tuple< Ts... > >
 
struct  probe_first< Predicate, Default, ttg::typelist< Ts... > >
 
struct  probe_any
 
struct  probe_any< Predicate, std::tuple< Ts... > >
 
struct  probe_any< Predicate, ttg::typelist< Ts... > >
 
struct  probe_all
 
struct  probe_all< Predicate, std::tuple< Ts... > >
 
struct  probe_all< Predicate, ttg::typelist< Ts... > >
 
struct  is_void
 
struct  is_nonvoid
 
struct  is_last_void
 
struct  void_to_Void
 
struct  void_to_Void< void >
 
struct  is_const_lvalue_reference
 
struct  is_nonconst_lvalue_reference
 
struct  is_ptr
 
struct  is_ptr< ttg::Ptr< T > >
 
struct  is_buffer
 
struct  is_buffer< ttg::Buffer< T, A > >
 
struct  is_buffer< const ttg::Buffer< T, A > >
 
struct  is_devicescratch
 
struct  is_devicescratch< ttg::devicescratch< T > >
 
struct  is_devicescratch< const ttg::devicescratch< T > >
 
struct  drop_first_n
 drops N elements from the front More...
 
struct  drop_first_n< std::tuple< Ts... >, std::size_t(0)>
 
struct  drop_first_n< typelist< Ts... >, std::size_t(0)>
 
struct  drop_first_n< std::tuple< T, Ts... >, N, std::enable_if_t< N !=0 > >
 
struct  drop_first_n< typelist< T, Ts... >, N, std::enable_if_t< N !=0 > >
 
struct  take_first_n
 take first N elements of a type list More...
 
struct  take_first_n_helper
 
struct  take_first_n_helper< std::tuple< Ts... >, std::tuple< Us... >, std::size_t(0)>
 
struct  take_first_n_helper< typelist< Ts... >, typelist< Us... >, std::size_t(0)>
 
struct  take_first_n_helper< std::tuple< Ts... >, std::tuple< U, Us... >, N, std::enable_if_t< N !=0 > >
 
struct  take_first_n_helper< typelist< Ts... >, typelist< U, Us... >, N, std::enable_if_t< N !=0 > >
 
struct  take_first_n< std::tuple< Ts... >, N >
 
struct  take_first_n< typelist< Ts... >, N >
 
struct  drop_last_n
 drops N trailing elements from a typelist More...
 
struct  type_identity
 
struct  typelist
 A container for types. More...
 
struct  is_typelist
 
struct  is_typelist< typelist< Ts... > >
 
struct  typelist_to_tuple
 
struct  typelist_to_tuple< typelist< T... > >
 
struct  typelist_size
 
struct  typelist_size< typelist< Ts... > >
 
struct  typelist_is_empty
 
struct  typelist_is_not_empty
 

Typedefs

template<typename T >
using candidate_argument_bindings_t = typename candidate_argument_bindings< T >::type
 
template<class... >
using void_t = void
 
template<typename T >
using remove_cvr_t = std::remove_cv_t< std::remove_reference_t< T > >
 
template<typename Tuple >
using nonref_tuple_t = typename nonref_tuple< Tuple >::type
 
template<typename... TupleTs>
using tuple_concat_t = typename tuple_concat< TupleTs... >::type
 
template<typename Tuple , template< typename > typename Pred>
using filtered_tuple_t = typename filtered_tuple< Tuple, Pred >::type
 
template<typename T >
using void_to_Void_t = typename void_to_Void< T >::type
 
template<typename T >
using typelist_to_tuple_t = typename typelist_to_tuple< T >::type
 

Functions

template<std::size_t N>
constexpr auto ordinal2index (std::size_t ordinal, std::array< std::size_t, N > extents)
 
template<std::size_t Ordinal, typename Func , typename... Typelists, std::size_t... ArgIdx>
auto compute_arg_binding_types_impl (Func &func, typelist< Typelists... > argument_type_lists, std::index_sequence< ArgIdx... > arg_idx={})
 
template<std::size_t Ordinal, typename ReturnType , typename Func , typename... Typelists, std::size_t... ArgIdx>
auto compute_arg_binding_types_r_impl (Func &func, typelist< Typelists... > argument_type_lists, std::index_sequence< ArgIdx... > arg_idx={})
 
template<typename Func , typename... Typelists>
auto compute_arg_binding_types (Func &func, typelist< Typelists... > argument_type_lists)
 
template<typename ReturnType , typename Func , typename... Typelists>
auto compute_arg_binding_types_r (Func &func, typelist< Typelists... > argument_type_lists)
 
template<std::size_t I, typename T , typename... RestOfTs>
constexpr auto get (typelist< T, RestOfTs... >)
 

Variables

template<typename T , typename = void>
constexpr bool is_terminal_v = false
 
template<typename T >
constexpr bool is_input_terminal_v = false
 detects whether a given type is an input terminal type More...
 
template<typename keyT >
constexpr bool is_input_terminal_v< InTerminalBase< keyT > > = true
 
template<typename keyT , typename valueT >
constexpr bool is_input_terminal_v< In< keyT, valueT > > = true
 
template<typename T >
constexpr bool is_output_terminal_v = false
 detects whether a given type is an output terminal type More...
 
template<typename keyT >
constexpr bool is_output_terminal_v< OutTerminalBase< keyT > > = true
 
template<typename keyT , typename valueT >
constexpr bool is_output_terminal_v< Out< keyT, valueT > > = true
 
template<typename... Ts>
constexpr bool is_output_terminal_tuple_v = is_output_terminal_tuple<Ts...>::value
 
template<typename T >
constexpr bool decays_to_output_terminal_tuple_v = is_output_terminal_tuple_v<std::decay_t<T>>
 
template<typename T >
constexpr bool is_nonconst_lvalue_reference_to_output_terminal_tuple_v
 
template<typename T >
constexpr bool has_member_function_hash_v = has_member_function_hash<T>::value
 
template<typename T >
constexpr bool has_ttg_hash_specialization_v = has_ttg_hash_specialization<T>::value
 
template<typename Callable >
constexpr bool is_generic_callable_v = is_generic_callable<Callable>::value
 
template<typename Callable , typename Enabler = void>
constexpr std::pair< bool, std::pair< ttg::typelist<>, ttg::typelist<> > > callable_args = {true, {}}
 
template<template< typename > typename Predicate, bool Default, typename... Ts>
constexpr bool probe_last_v = probe_last<Predicate, Default, Ts...>::value
 
template<template< typename > typename Predicate, bool Default, typename... Ts>
constexpr bool probe_first_v = probe_first<Predicate, Default, Ts...>::value
 
template<template< typename > typename Predicate, typename... Ts>
constexpr bool probe_any_v = probe_any<Predicate, Ts...>::value
 
template<template< typename > typename Predicate, typename... Ts>
constexpr bool probe_all_v = probe_all<Predicate, Ts...>::value
 
template<typename T >
constexpr bool is_Void_v = std::is_same_v<std::decay_t<T>, Void>
 
template<typename T >
constexpr bool is_void_v = is_Void_v<T> || std::is_void_v<T>
 
template<typename T >
constexpr bool is_nonvoid_v = !is_void_v<T>
 
template<typename... Ts>
constexpr bool is_all_void_v = (is_void_v<Ts> && ...)
 
template<typename... Ts>
constexpr bool is_all_Void_v = (is_Void_v<Ts> && ...)
 
template<typename... Ts>
constexpr bool is_any_void_v = (is_void_v<Ts> || ...)
 
template<typename... Ts>
constexpr bool is_any_Void_v = (is_Void_v<Ts> || ...)
 
template<typename... Ts>
constexpr bool is_none_void_v = !is_any_void_v<Ts...>
 
template<typename... Ts>
constexpr bool is_none_Void_v = !is_any_Void_v<Ts...>
 
template<typename... Ts>
constexpr bool is_last_void_v = is_last_void<Ts...>::value
 
template<typename T >
constexpr bool is_const_lvalue_reference_v
 
template<typename T >
constexpr bool is_nonconst_lvalue_reference_v
 
template<typename... Ts>
constexpr bool is_any_nonconst_lvalue_reference_v = (is_nonconst_lvalue_reference_v<Ts> || ...)
 
template<typename T >
constexpr bool is_ptr_v = is_ptr<T>::value
 
template<typename T >
constexpr bool is_buffer_v = is_buffer<T>::value
 
template<typename T >
constexpr bool is_devicescratch_v = is_devicescratch<T>::value
 
template<typename T >
constexpr bool is_typelist_v = is_typelist<T>::value
 
template<typename T >
constexpr std::size_t typelist_size_v = typelist_size<T>::value
 
template<typename T >
constexpr bool typelist_is_empty_v = (typelist_size_v<T> == 0)
 
template<typename T >
constexpr bool typelist_is_not_empty_v = (typelist_size_v<T> != 0)
 

Typedef Documentation

◆ candidate_argument_bindings_t

template<typename T >
using ttg::meta::candidate_argument_bindings_t = typedef typename candidate_argument_bindings<T>::type

Definition at line 221 of file callable.h.

◆ filtered_tuple_t

template<typename Tuple , template< typename > typename Pred>
using ttg::meta::filtered_tuple_t = typedef typename filtered_tuple<Tuple, Pred>::type

Definition at line 87 of file meta.h.

◆ nonref_tuple_t

template<typename Tuple >
using ttg::meta::nonref_tuple_t = typedef typename nonref_tuple<Tuple>::type

Definition at line 43 of file meta.h.

◆ remove_cvr_t

template<typename T >
using ttg::meta::remove_cvr_t = typedef std::remove_cv_t<std::remove_reference_t<T> >

Definition at line 27 of file meta.h.

◆ tuple_concat_t

template<typename... TupleTs>
using ttg::meta::tuple_concat_t = typedef typename tuple_concat<TupleTs...>::type

Definition at line 60 of file meta.h.

◆ typelist_to_tuple_t

template<typename T >
using ttg::meta::typelist_to_tuple_t = typedef typename typelist_to_tuple<T>::type

Definition at line 52 of file typelist.h.

◆ void_t

template<class... >
using ttg::meta::void_t = typedef void

Definition at line 23 of file meta.h.

◆ void_to_Void_t

template<typename T >
using ttg::meta::void_to_Void_t = typedef typename void_to_Void<T>::type

Definition at line 271 of file meta.h.

Function Documentation

◆ compute_arg_binding_types()

template<typename Func , typename... Typelists>
auto ttg::meta::compute_arg_binding_types ( Func &  func,
typelist< Typelists... >  argument_type_lists 
)
Template Parameters
Funca callable type
Typelistsa pack of typelists encoding how each argument can be invoked
Parameters
funca reference to callable of type Func
argument_type_listsa list of possible types to try for each argument; can contain void
Returns
a ttg::typelist<ttg::typelist<ReturnType>,ttg::typelist<ArgsTypes>> where ReturnType is the return type of func and ArgsTypes encodes:
  • the exact argument bindings used by Func, if func is a nongeneric callable;
  • the first invocable combination of argument types discovered by row-major iteration, if func is a generic callable

Definition at line 154 of file callable.h.

◆ compute_arg_binding_types_impl()

template<std::size_t Ordinal, typename Func , typename... Typelists, std::size_t... ArgIdx>
auto ttg::meta::compute_arg_binding_types_impl ( Func &  func,
typelist< Typelists... >  argument_type_lists,
std::index_sequence< ArgIdx... >  arg_idx = {} 
)

detects argument and return types of a generic callable (func) by trying each combination of types (argument_type_lists) for the respective arguments starting with the combination corresponding to the given Ordinal

Template Parameters
Ordinala nonnegative integer specifying the ordinal of the type combination from Typelists to try; maximum value is (std::tuple_size_v<Typelists> * ...)
Funca generic callable type
Typelistsa pack of ttg::typelist's each of which specifies candidate types for the respective argument of Func
Parameters
funca generic callable
argument_type_listsa ttg::typelist<Typelists...>
Note
iterates over argument_type_lists in "row-major" order (i.e. last list in argument_type_lists is iterated first, etc.; the maxim
Returns
an object of type ttg::typelist<ttg::typelist<ReturnType>,ttg::typelist<ArgTypes>>

Definition at line 84 of file callable.h.

◆ compute_arg_binding_types_r()

template<typename ReturnType , typename Func , typename... Typelists>
auto ttg::meta::compute_arg_binding_types_r ( Func &  func,
typelist< Typelists... >  argument_type_lists 
)
Template Parameters
ReturnTypea type expected to be returned by Func
Funca callable type
Typelistsa pack of typelists encoding how each argument can be invoked
Parameters
funca reference to callable of type Func
argument_type_listsa list of possible types to try for each argument; can contain void
Returns
a ttg::typelist encoding:
  • the exact argument bindings used by Func, if func is a nongeneric callable;
  • the first invocable combination of argument types discovered by row-major iteration, if func is a generic callable

Definition at line 175 of file callable.h.

◆ compute_arg_binding_types_r_impl()

template<std::size_t Ordinal, typename ReturnType , typename Func , typename... Typelists, std::size_t... ArgIdx>
auto ttg::meta::compute_arg_binding_types_r_impl ( Func &  func,
typelist< Typelists... >  argument_type_lists,
std::index_sequence< ArgIdx... >  arg_idx = {} 
)

detects argument types of a generic callable (func) by trying each combination of types (argument_type_lists) for the respective arguments starting with the combination corresponding to the given Ordinal . The callable is expected to return ReturnType

Template Parameters
Ordinala nonnegative integer specifying the ordinal of the type combination from Typelists to try; maximum value is (std::tuple_size_v<Typelists> * ...)
ReturnTypethe expected return type of Func
Funca generic callable type
Typelistsa pack of ttg::typelist's each of which specifies candidate types for the respective argument of Func
Parameters
funca generic callable
argument_type_listsa ttg::typelist<Typelists...>
Note
iterates over argument_type_lists in "row-major" order (i.e. last list in argument_type_lists is iterated first, etc.; the maxim
Returns
an object of type ttg::typelist<ArgTypes>

Definition at line 122 of file callable.h.

◆ get()

template<std::size_t I, typename T , typename... RestOfTs>
constexpr auto ttg::meta::get ( typelist< T, RestOfTs... >  )
constexpr

Definition at line 101 of file typelist.h.

◆ ordinal2index()

template<std::size_t N>
constexpr auto ttg::meta::ordinal2index ( std::size_t  ordinal,
std::array< std::size_t, N >  extents 
)
constexpr

converts an ordinal to N-index

Parameters
ordinalthe ordinal value
extentsextent of each mode

Definition at line 61 of file callable.h.

Variable Documentation

◆ callable_args

template<typename Callable , typename Enabler = void>
constexpr std::pair<bool, std::pair<ttg::typelist<>, ttg::typelist<> > > ttg::meta::callable_args = {true, {}}
constexpr

callable_args<Callable> detects whether Callable is generic or not, and in the latter case detects (using Boost.CallableTraits) its return and argument types. callable_args<Callable> is a constexpr value of type std::pair<bool,ttg::typelist<ttg::typelist<ReturnType>,ttg::typelist<ArgTypes>>> where:

  • the boolean indicates whether Callable is generic (true) or not (false),
  • ReturnType is the return type of the Callable if it's generic, empty otherwise
  • ArgTypes is the argument types of the Callable if it's generic, empty otherwise
    Template Parameters
    Callablea callable type

Definition at line 44 of file callable.h.

◆ decays_to_output_terminal_tuple_v

template<typename T >
constexpr bool ttg::meta::decays_to_output_terminal_tuple_v = is_output_terminal_tuple_v<std::decay_t<T>>
inlineconstexpr

Definition at line 632 of file terminal.h.

◆ has_member_function_hash_v

template<typename T >
constexpr bool ttg::meta::has_member_function_hash_v = has_member_function_hash<T>::value
constexpr

Definition at line 70 of file hash.h.

◆ has_ttg_hash_specialization_v

template<typename T >
constexpr bool ttg::meta::has_ttg_hash_specialization_v = has_ttg_hash_specialization<T>::value
constexpr

Definition at line 143 of file hash.h.

◆ is_all_void_v

template<typename... Ts>
constexpr bool ttg::meta::is_all_void_v< ttg::typelist< Ts... > > = (is_void_v<Ts> && ...)
constexpr

Definition at line 221 of file meta.h.

◆ is_all_Void_v

template<typename... Ts>
constexpr bool ttg::meta::is_all_Void_v< ttg::typelist< Ts... > > = (is_Void_v<Ts> && ...)
constexpr

Definition at line 227 of file meta.h.

◆ is_any_nonconst_lvalue_reference_v

template<typename... Ts>
constexpr bool ttg::meta::is_any_nonconst_lvalue_reference_v< std::tuple< Ts... > > = (is_nonconst_lvalue_reference_v<Ts> || ...)
constexpr

Definition at line 288 of file meta.h.

◆ is_any_void_v

template<typename... Ts>
constexpr bool ttg::meta::is_any_void_v< ttg::typelist< Ts... > > = (is_void_v<Ts> || ...)
constexpr

Definition at line 233 of file meta.h.

◆ is_any_Void_v

template<typename... Ts>
constexpr bool ttg::meta::is_any_Void_v< ttg::typelist< Ts... > > = (is_Void_v<Ts> || ...)
constexpr

Definition at line 239 of file meta.h.

◆ is_buffer_v

template<typename T >
constexpr bool ttg::meta::is_buffer_v = is_buffer<T>::value
constexpr

Definition at line 325 of file meta.h.

◆ is_const_lvalue_reference_v

template<typename T >
constexpr bool ttg::meta::is_const_lvalue_reference_v
constexpr
Initial value:
=
std::is_lvalue_reference_v<T> &&std::is_const_v<std::remove_reference_t<T>>

Definition at line 274 of file meta.h.

◆ is_devicescratch_v

template<typename T >
constexpr bool ttg::meta::is_devicescratch_v = is_devicescratch<T>::value
constexpr

Definition at line 340 of file meta.h.

◆ is_generic_callable_v

template<typename Callable >
constexpr bool ttg::meta::is_generic_callable_v = is_generic_callable<Callable>::value
inlineconstexpr

Definition at line 32 of file callable.h.

◆ is_input_terminal_v

template<typename T >
constexpr bool ttg::meta::is_input_terminal_v = false
inlineconstexpr

detects whether a given type is an input terminal type

Definition at line 360 of file terminal.h.

◆ is_input_terminal_v< In< keyT, valueT > >

template<typename keyT , typename valueT >
constexpr bool ttg::meta::is_input_terminal_v< In< keyT, valueT > > = true
inlineconstexpr

Definition at line 364 of file terminal.h.

◆ is_input_terminal_v< InTerminalBase< keyT > >

template<typename keyT >
constexpr bool ttg::meta::is_input_terminal_v< InTerminalBase< keyT > > = true
inlineconstexpr

Definition at line 362 of file terminal.h.

◆ is_last_void_v

template<typename... Ts>
constexpr bool ttg::meta::is_last_void_v = is_last_void<Ts...>::value
constexpr

Definition at line 260 of file meta.h.

◆ is_nonconst_lvalue_reference_to_output_terminal_tuple_v

template<typename T >
constexpr bool ttg::meta::is_nonconst_lvalue_reference_to_output_terminal_tuple_v
inlineconstexpr
Initial value:
=
is_output_terminal_tuple_v<std::decay_t<T>> &&std::is_lvalue_reference_v<T> &&
!std::is_const_v<std::remove_reference_t<T>>

Definition at line 637 of file terminal.h.

◆ is_nonconst_lvalue_reference_v

template<typename T >
constexpr bool ttg::meta::is_nonconst_lvalue_reference_v
constexpr
Initial value:
=
std::is_lvalue_reference_v<T> && !std::is_const_v<std::remove_reference_t<T>>

Definition at line 281 of file meta.h.

◆ is_none_void_v

template<typename... Ts>
constexpr bool ttg::meta::is_none_void_v< ttg::typelist< Ts... > > = !is_any_void_v<Ts...>
constexpr

Definition at line 245 of file meta.h.

◆ is_none_Void_v

template<typename... Ts>
constexpr bool ttg::meta::is_none_Void_v< ttg::typelist< Ts... > > = !is_any_Void_v<Ts...>
constexpr

Definition at line 251 of file meta.h.

◆ is_nonvoid_v

template<typename T >
constexpr bool ttg::meta::is_nonvoid_v = !is_void_v<T>
constexpr

Definition at line 215 of file meta.h.

◆ is_output_terminal_tuple_v

template<typename... Ts>
constexpr bool ttg::meta::is_output_terminal_tuple_v = is_output_terminal_tuple<Ts...>::value
inlineconstexpr

Definition at line 629 of file terminal.h.

◆ is_output_terminal_v

template<typename T >
constexpr bool ttg::meta::is_output_terminal_v = false
inlineconstexpr

detects whether a given type is an output terminal type

Definition at line 615 of file terminal.h.

◆ is_output_terminal_v< Out< keyT, valueT > >

template<typename keyT , typename valueT >
constexpr bool ttg::meta::is_output_terminal_v< Out< keyT, valueT > > = true
inlineconstexpr

Definition at line 619 of file terminal.h.

◆ is_output_terminal_v< OutTerminalBase< keyT > >

template<typename keyT >
constexpr bool ttg::meta::is_output_terminal_v< OutTerminalBase< keyT > > = true
inlineconstexpr

Definition at line 617 of file terminal.h.

◆ is_ptr_v

template<typename T >
constexpr bool ttg::meta::is_ptr_v = is_ptr<T>::value
constexpr

Definition at line 310 of file meta.h.

◆ is_terminal_v

template<typename T , typename = void>
constexpr bool ttg::meta::is_terminal_v = false
inlineconstexpr

Definition at line 131 of file terminal.h.

◆ is_typelist_v

template<typename T >
constexpr bool ttg::meta::is_typelist_v = is_typelist<T>::value
constexpr

Definition at line 41 of file typelist.h.

◆ is_Void_v

template<typename T >
constexpr bool ttg::meta::is_Void_v = std::is_same_v<std::decay_t<T>, Void>
constexpr

Definition at line 206 of file meta.h.

◆ is_void_v

template<typename T >
constexpr bool ttg::meta::is_void_v = is_Void_v<T> || std::is_void_v<T>
constexpr

Definition at line 209 of file meta.h.

◆ probe_all_v

template<template< typename > typename Predicate, typename... Ts>
constexpr bool ttg::meta::probe_all_v = probe_all<Predicate, Ts...>::value
constexpr

This constexpr function checks if Predicate is true for all elements of Ts...; evaluates to true for the empty Ts...

Template Parameters
Predicateboolean metafunction, i.e. Predicate<T>::value is a compile-time boolean
Tsa type pack

Definition at line 194 of file meta.h.

◆ probe_any_v

template<template< typename > typename Predicate, typename... Ts>
constexpr bool ttg::meta::probe_any_v = probe_any<Predicate, Ts...>::value
constexpr

This constexpr function checks if Predicate is true for any element of Ts...; evaluates to false for the empty Ts...

Template Parameters
Predicateboolean metafunction, i.e. Predicate<T>::value is a compile-time boolean
Tsa type pack

Definition at line 172 of file meta.h.

◆ probe_first_v

template<template< typename > typename Predicate, bool Default, typename... Ts>
constexpr bool ttg::meta::probe_first_v = probe_first<Predicate, Default, Ts...>::value
constexpr

This constexpr function checks if Predicate is true when applied to the first element of Ts..., if not empty, else evaluates to Default

Template Parameters
Predicateboolean metafunction, i.e. Predicate<T>::value is a compile-time boolean
Defaultthe metafunction result for the case of empty Ts...
Tsa type pack

Definition at line 150 of file meta.h.

◆ probe_last_v

template<template< typename > typename Predicate, bool Default, typename... Ts>
constexpr bool ttg::meta::probe_last_v = probe_last<Predicate, Default, Ts...>::value
constexpr

This constexpr function applies Predicate is true when applied to the last element of Ts..., if not empty, else evaluates to Default

Template Parameters
Predicateboolean metafunction, i.e. Predicate<T>::value is a compile-time boolean
Defaultthe metafunction result for the case of empty Ts...
Tsa type pack

Definition at line 120 of file meta.h.

◆ typelist_is_empty_v

template<typename T >
constexpr bool ttg::meta::typelist_is_empty_v = (typelist_size_v<T> == 0)
constexpr

Definition at line 66 of file typelist.h.

◆ typelist_is_not_empty_v

template<typename T >
constexpr bool ttg::meta::typelist_is_not_empty_v = (typelist_size_v<T> != 0)
constexpr

Definition at line 72 of file typelist.h.

◆ typelist_size_v

template<typename T >
constexpr std::size_t ttg::meta::typelist_size_v = typelist_size<T>::value
constexpr

Definition at line 63 of file typelist.h.