ttg 1.0.0
Template Task Graph (TTG): flowgraph-based programming model for high-performance distributed-memory algorithms
Loading...
Searching...
No Matches
Namespaces | Classes | Typedefs | Functions | Variables
ttg::meta Namespace Reference

Namespaces

namespace  detail
 

Classes

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

Typedefs

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 candidate_argument_bindings_t = typename candidate_argument_bindings< 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
 
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
 
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<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_const_v = is_const<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<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

Definition at line 222 of file callable.h.

◆ filtered_tuple_t

Definition at line 85 of file meta.h.

◆ nonref_tuple_t

Definition at line 41 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 25 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 58 of file meta.h.

◆ typelist_to_tuple_t

Definition at line 53 of file typelist.h.

◆ void_t

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

Definition at line 21 of file meta.h.

◆ void_to_Void_t

Definition at line 269 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 155 of file callable.h.

Here is the call graph for this function:

◆ 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 85 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 176 of file callable.h.

Here is the call graph for this function:

◆ 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 123 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 102 of file typelist.h.

Here is the call graph for this function:

◆ 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 62 of file callable.h.

Here is the call graph for this function:

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 45 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 633 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 71 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 144 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 219 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 225 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 286 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 231 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 237 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 312 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 272 of file meta.h.

◆ is_const_v

template<typename T >
constexpr bool ttg::meta::is_const_v = is_const<T>::value
constexpr

Definition at line 326 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 319 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 33 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 361 of file terminal.h.

◆ is_input_terminal_v< In< keyT, valueT > >

Definition at line 365 of file terminal.h.

◆ is_input_terminal_v< InTerminalBase< keyT > >

Definition at line 363 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 258 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 638 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 279 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 243 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 249 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 213 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 630 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 616 of file terminal.h.

◆ is_output_terminal_v< Out< keyT, valueT > >

Definition at line 620 of file terminal.h.

◆ is_output_terminal_v< OutTerminalBase< keyT > >

Definition at line 618 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 304 of file meta.h.

◆ is_terminal_v

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

Definition at line 132 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 42 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 204 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 207 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 192 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 170 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 148 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 118 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 67 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 73 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 64 of file typelist.h.