|
uTL
micro Template library
|
Classes | |
| struct | bind_back |
| struct | bind_front |
| struct | identity |
| struct | nat_ |
| struct | nil_ |
| struct | not_same_as |
| struct | quote |
| struct | quote_i |
Wrap a template F taking literal constants of type T into an Invokable. More... | |
| struct | same_ |
| struct | same_< _Tp, _Tp > |
| struct | same_as |
| struct | typelist |
| struct | wrap |
| struct | wrap_i |
Wrap a template F taking literal constants of type T into an Invokable. More... | |
Typedefs | |
| template<typename... > | |
| using | void_ = void |
| void_ type alias More... | |
| template<typename... > | |
| using | void_t = void |
| void_t type alias More... | |
| template<typename Tp > | |
| using | eval = typename Tp::type |
Type alias for Tp::type. Used to evaluate/extract return type of metafunctions. More... | |
| using | Npos = size_< index_t(-1)> |
| The last position we can express for indexing. More... | |
| template<bool B> | |
| using | not_c = bool_<!B > |
| Negate the bool constant parameter. More... | |
| template<typename _Tp > | |
| using | not_ = not_c< _Tp::type::value > |
| not More... | |
| template<typename List > | |
| using | size = size_< List::size()> |
| template<typename List > | |
| using | empty = bool_< List::empty()> |
| template<typename T1 , typename T2 > | |
| using | pair = typelist< T1, T2 > |
| template<typename List , typename... Ts> | |
| using | push_front = eval< apply< bind_front< quote< typelist >, Ts... >, List > > |
| template<typename List , typename... Ts> | |
| using | push_back = eval< apply< bind_back< quote< typelist >, Ts... >, List > > |
| template<typename List , typename Pred > | |
| using | all_of = if_< empty< List >, false_, empty< filter< List, compose< quote< not_ >, Pred > > > > |
| template<typename List , typename Pred > | |
| using | any_of = not_< empty< filter< List, Pred > > > |
| template<typename List , typename Pred > | |
| using | none_of = empty< filter< List, Pred > > |
| template<typename _T1 , typename _T2 , typename _Ret = _T1> | |
| using | use_if_same_t = enable_if_t< same_< _T1, _T2 >::value, _Ret > |
| If same type resolves to _Ret, else SFINAE. More... | |
| template<typename _T1 , typename _T2 , typename _Ret = _T1> | |
| using | use_if_not_same_t = enable_if_t< !same_< _T1, _T2 >::value, _Ret > |
| If not same type resolves to _Ret, else SFINAE. More... | |
| template<typename T1 , typename... Ts> | |
| using | use_if_any_t = enable_if_t< or_< T1, Ts... >::value, T1 > |
| If any type (_T1 or _T2) type resolves to _Ret, else to SFINAE. More... | |
| template<typename T1 , typename... Ts> | |
| using | use_if_all_t = enable_if_t< and_< T1, Ts... >::value, T1 > |
| If both type (_T1 and _T2) type resolves to _Ret, else to SFINAE. More... | |
| template<typename Tp , Tp v> | |
| using | integral_ = std::integral_constant< Tp, v > |
| template<bool v> | |
| using | bool_ = integral_< bool, v > |
| bool_ type: integral constant wrapper for bool More... | |
| using | true_ = bool_< true > |
| The type used as a compile-time boolean with true value. More... | |
| using | false_ = bool_< false > |
| The type used as a compile-time boolean with false value. More... | |
| template<int8_t v> | |
| using | int8_ = integral_< int8_t, v > |
int8_ type: integral constant wrapper for int8_t More... | |
| template<uint8_t v> | |
| using | uint8_ = integral_< uint8_t, v > |
uint8_ type: integral constant wrapper for uint8_t More... | |
| template<int16_t v> | |
| using | int16_ = integral_< int16_t, v > |
int16_ type: integral constant wrapper for int16_t More... | |
| template<uint16_t v> | |
| using | uint16_ = integral_< uint16_t, v > |
uint16_ type: integral constant wrapper for uint16_t More... | |
| template<int32_t v> | |
| using | int32_ = integral_< int32_t, v > |
int32_ type: integral constant wrapper for int32_t More... | |
| template<uint32_t v> | |
| using | uint32_ = integral_< uint32_t, v > |
uint32_ type: integral constant wrapper for uint32_t More... | |
| template<char v> | |
| using | char_ = integral_< char, v > |
char_ type: integral constant wrapper for char More... | |
| template<int v> | |
| using | int_ = integral_< int, v > |
int_ type: integral constant wrapper for int More... | |
| template<long v> | |
| using | long_ = integral_< long, v > |
long_ type: integral constant wrapper for long More... | |
| template<index_t v> | |
| using | index_ = integral_< index_t, v > |
index_ type: integral constant wrapper for index_t a.k.a std::size_t More... | |
| template<size_t v> | |
| using | size_ = integral_< size_t, v > |
size_ type: integral constant wrapper for size_t a.k.a std::size_t More... | |
| template<typename Tp > | |
| using | sizeof_ = size_< sizeof(Tp)> |
| template<typename Tp > | |
| using | alignof_ = size_< alignof(Tp)> |
| template<class Tp , Tp... Ints> | |
| using | integer_sequence = std::integer_sequence< Tp, Ints... > |
| template<typename Tp , Tp Num> | |
| using | make_integer_sequence = std::make_integer_sequence< Tp, Num > |
| template<index_t... Idx> | |
| using | index_sequence = integer_sequence< index_t, Idx... > |
| Alias template index_sequence. More... | |
| template<index_t Num> | |
| using | make_index_sequence = make_integer_sequence< index_t, Num > |
| Alias template make_index_sequence. More... | |
| template<typename... Types> | |
| using | index_sequence_for = make_index_sequence< sizeof...(Types)> |
| Alias template index_sequence_for. More... | |
meta::invoke | |
A meta-programming invoke() analogous. A
| |
| template<typename _Tp > | |
| using | identity_t = eval< identity< _Tp > > |
| identity type alias More... | |
| template<typename Fn , typename... Args> | |
| using | invoke = typename Fn::template apply< Args... > |
| template<typename Fn , typename... Args> | |
| using | invoke_t = eval< invoke< Fn, Args... > > |
| template<template< typename... > class F, typename... T> | |
| using | is_applicable_t = eval< detail::is_applicable_< F, T... > > |
check if we can instantiate F with parameters T More... | |
| template<typename Q , typename... T> | |
| using | is_applicable_qt = eval< detail::is_applicable_q_< Q, T... > > |
check if we can invoke Q with parameters T More... | |
| template<typename T , template< T... > class F, T... Is> | |
| using | is_applicable_it = eval< detail::is_applicable_i_< T, F, Is... > > |
check if we can instantiate F with parameters Is of type T More... | |
| template<template< class... > class F, class... Ts> | |
| using | defer = if_< detail::is_applicable_< F, Ts... >, detail::defer_< F, Ts... >, nil_ > |
| defer alias template for F<Ts...> More... | |
| template<typename T , template< T... > class F, T... Is> | |
| using | defer_i = if_< detail::is_applicable_i_< T, F, Is... >, detail::defer_i_< T, F, Is... >, nil_ > |
| defer_i alias template for F<T, Is...> More... | |
| template<typename... Fns> | |
| using | compose = detail::compose_< Fns... > |
| template<template< typename... > class... Fns> | |
| using | compose_f = detail::compose_f_< Fns... > |
| template<typename... _Ts> | |
| using | or_ = eval< detail::_or_< _Ts... > > |
| template<typename... _Ts> | |
| using | and_ = eval< detail::_and_< _Ts... > > |
| template<typename _T1 , typename _T2 > | |
| using | not_same_ = not_< eval< same_< _T1, _T2 > >> |
| template<typename _Tp > | |
| using | negate = integral_< decltype(-_Tp()), -_Tp()> |
| Negation. More... | |
| template<typename _Tp1 , typename _Tp2 > | |
| using | add = integral_< decltype(_Tp1()+_Tp2()), _Tp1()+_Tp2() > |
| Addition. More... | |
| template<typename _Tp1 , typename _Tp2 > | |
| using | mult = integral_< decltype(_Tp2() *_Tp2()), _Tp1() *_Tp2() > |
| Multiplication. More... | |
| template<typename _Tp1 , typename _Tp2 > | |
| using | divide = integral_< decltype(_Tp2()/_Tp2()), _Tp1()/_Tp2() > |
| Division. More... | |
| template<typename _Tp1 , typename _Tp2 > | |
| using | modulo = integral_< decltype(_Tp1() % _Tp2()), _Tp1() % _Tp2() > |
| Modulo. More... | |
| template<typename _Tp1 , typename _Tp2 > | |
| using | sub = add< _Tp1, negate< _Tp2 > > |
| Substruction. More... | |
| template<typename _Tp > | |
| using | inc = add< _Tp, int_< 1 > > |
| Increase. More... | |
| template<typename _Tp > | |
| using | dec = add< _Tp, int_<-1 > > |
| decrease More... | |
| template<typename _Tp1 , typename _Tp2 > | |
| using | comp_eq = bool_< _Tp1()==_Tp2()> |
| template<typename _Tp1 , typename _Tp2 > | |
| using | comp_lt = bool_<(_Tp1()< _Tp2())> |
| template<typename _Tp1 , typename _Tp2 > | |
| using | comp_ne = not_< comp_eq< _Tp1, _Tp2 > > |
| Not equal. More... | |
| template<typename _Tp1 , typename _Tp2 > | |
| using | comp_gt = comp_lt< _Tp2, _Tp1 > |
| Greater than. More... | |
| template<typename _Tp1 , typename _Tp2 > | |
| using | comp_le = not_< comp_lt< _Tp2, _Tp1 > > |
| Less or equal. More... | |
| template<typename _Tp1 , typename _Tp2 > | |
| using | comp_ge = not_< comp_lt< _Tp1, _Tp2 > > |
| Greater or equal. More... | |
| template<typename _T > | |
| using | bitnot_ = integral_< typename _T::value_type,(typename _T::value_type)(~_T())> |
| template<typename _Tp1 , typename _Tp2 > | |
| using | bitand_ = integral_< decltype(_Tp1() &_Tp2()), _Tp1() &_Tp2()> |
| template<typename _Tp1 , typename _Tp2 > | |
| using | bitor_ = integral_< decltype(_Tp1()|_Tp2()), _Tp1()|_Tp2()> |
| template<typename _Tp1 , typename _Tp2 > | |
| using | bitxor_ = integral_< decltype(_Tp1() ^ _Tp2()), _Tp1() ^ _Tp2()> |
| template<typename _Tp , typename shift > | |
| using | shift_left = integral_< typename _Tp::value_type,(typename _Tp::value_type)(_Tp()<< shift())> |
| template<typename _Tp , typename shift > | |
| using | shift_right = integral_< typename _Tp::value_type,(typename _Tp::value_type)(_Tp() > > shift())> |
| template<bool B, typename... Args> | |
| using | if_c = eval< detail::if_c_< B, Args... > > |
| Select one type or another depending on a compile-time Boolean. More... | |
| template<typename If , typename... Args> | |
| using | if_ = if_c< If::type::value, Args... > |
| Select one type or another depending on a compile-time Boolean type. More... | |
| template<typename T1 , typename ... > | |
| using | first_of = T1 |
| Select the first type of a type sequence. More... | |
| template<typename T1 , typename T2 , typename ... > | |
| using | second_of = T2 |
| Select the second type of a type sequence. More... | |
| template<bool If> | |
| using | when = eval< detail::when_< If > > |
Well formed only if If is true. More... | |
| template<bool If, typename _Tp = void> | |
| using | enable_if = std::enable_if< If, _Tp > |
| enable_if, imported from stl More... | |
| template<bool If, typename _Tp = void> | |
| using | enable_if_t = eval< enable_if< If, _Tp > > |
| alias template for enable_if More... | |
| template<size_t N, typename ... Ts> | |
| using | repeat_c = typename typelist< Ts... >::template times< N > |
| template<typename N , typename ... Ts> | |
| using | repeat = repeat_c< N::type::value, Ts... > |
| template<typename Fn , typename Seq > | |
| using | apply = apply_impl::apply_< Fn, Seq > |
| template<typename Fn , typename Seq > | |
| using | apply_t = eval< apply< Fn, Seq > > |
| template<typename List , index_t N> | |
| using | at_c = eval< at_impl::at_< List, N > > |
| template<typename List , typename N > | |
| using | at = at_c< List, N::type::value > |
| template<typename List > | |
| using | front = eval< front_impl::front_< List > > |
| template<typename List > | |
| using | back = eval< back_impl::back_< List > > |
| template<typename... Lists> | |
| using | cat = eval< cat_impl::cat_< Lists... > > |
| template<typename List , typename V , typename Fn > | |
| using | fold = eval< fold_impl::fold_< List, V, Fn > > |
| template<typename List , typename V , typename Fn > | |
| using | accumulate = fold< List, V, Fn > |
| accumulate is an stl name for fold More... | |
| template<typename List , typename V , typename Fn > | |
| using | rev_fold = eval< rev_fold_impl::rev_fold_< List, V, Fn > > |
| template<typename List > | |
| using | reverse = eval< reverse_impl::reverse_< List > > |
| template<typename List > | |
| using | pop_front = eval< pop_front_impl::pop_front_< List > > |
| template<typename List > | |
| using | pop_back = eval< pop_back_impl::pop_back_< List > > |
| template<typename... Args> | |
| using | transform = eval< transform_impl::transform_< typelist< Args... > > > |
| template<typename... Args> | |
| using | transform_lazy = eval< transform_lazy_impl::transform_lazy_< typelist< Args... > > > |
| template<typename List , typename Pred > | |
| using | find_if = eval< find_if_impl::find_if_< List, Pred, 0 > > |
| template<typename List , typename T > | |
| using | find = find_if< List, same_as< T > > |
| template<typename List , typename Pred > | |
| using | seek_if = eval< seek_if_impl::seek_if_< List, Pred, 0 > > |
| template<typename List , typename T > | |
| using | seek = seek_if< List, same_as< T > > |
| template<typename List , typename Pred > | |
| using | count_if = eval< count_if_impl::count_if_< List, Pred, 0 > > |
| template<typename List , typename T > | |
| using | count = count_if< List, same_as< T > > |
| template<typename List , typename Pred > | |
| using | filter = eval< filter_impl::filter_< List, Pred, typelist<> > > |
| template<typename List , typename Pred , typename T > | |
| using | replace_if = eval< replace_if_impl::replace_if_< List, Pred, T, typelist<> > > |
| template<typename List , typename T , typename U > | |
| using | replace = eval< replace_if< List, same_as< T >, U > > |
| template<template< typename... > class Op, typename... Args> | |
| using | is_detected = typename detail::detector< nat_, void, Op, Args... >::detected |
| template<template< typename... > class Op, typename... Args> | |
| using | detected_t = eval< detail::detector< nat_, void, Op, Args... > > |
| template<typename Default , template< typename... > class Op, typename... Args> | |
| using | detected_or_t = eval< detail::detected_or< Default, Op, Args... > > |
| template<typename Expected , template< typename... > class Op, typename... Args> | |
| using | is_detected_exact = eval< same_< Expected, detected_t< Op, Args... > > > |
| template<typename To , template< typename... > class Op, typename... Args> | |
| using | is_detected_convertible = eval< std::is_convertible< detected_t< Op, Args... >, To > > |
| template<template< typename... > class Op, typename... Args> | |
| constexpr bool | is_detected_v = is_detected<Op, Args...>::value |
| Detection predicate. More... | |
| template<typename Expected , template< typename... > class Op, typename... Args> | |
| constexpr bool | is_detected_exact_v = is_detected_exact< Expected, Op, Args...>::value |
evaluates to true if evaluation of Op<Args...> is Expected and to false if not More... | |
| template<typename To , template< typename... > class Op, typename... Args> | |
| constexpr bool | is_detected_convertible_v |
| using utl::meta::accumulate = typedef fold<List, V, Fn> |
accumulate is an stl name for fold
Definition at line 387 of file typelist.h.
| using utl::meta::add = typedef integral_< decltype(_Tp1() + _Tp2()), _Tp1() + _Tp2() > |
Addition.
Definition at line 144 of file operations.h.
| using utl::meta::alignof_ = typedef size_<alignof(Tp)> |
Computes the alignment required for any instance of the type Tp. Complexity
.
Definition at line 120 of file integral.h.
| using utl::meta::all_of = typedef if_ < empty <List>, false_, empty < filter <List, compose<quote<not_>, Pred> > > > |
Returns true_ if Pred returns true_ for all the elements in the List or if the List is empty and false_ otherwise.
Definition at line 861 of file typelist.h.
| using utl::meta::any_of = typedef not_< empty<filter <List, Pred> > > |
Returns true_ if Pred returns true_ for any of the elements in the List and false_ otherwise.
Definition at line 868 of file typelist.h.
| using utl::meta::apply = typedef apply_impl::apply_<Fn, Seq> |
Apply the Invocable Fn using the types in the type Seq as arguments.
If Seq == typelist<> then Unpack typelist and apply to Fn It Seq == integer_sequence<> then Unpack and use the integral_c<> of each integer
Definition at line 197 of file typelist.h.
| using utl::meta::apply_t = typedef eval <apply<Fn, Seq> > |
Definition at line 200 of file typelist.h.
| using utl::meta::at = typedef at_c<List, N::type::value> |
Return the N th element in the meta::typelist List.
Complexity
.
Definition at line 253 of file typelist.h.
| using utl::meta::at_c = typedef eval< at_impl::at_<List, N> > |
Return the N th element in the meta::typelist List.
Complexity
.
Definition at line 245 of file typelist.h.
| using utl::meta::back = typedef eval< back_impl::back_<List> > |
Return the last element in meta::typelist List. Complexity
.
Definition at line 296 of file typelist.h.
| using utl::meta::bitand_ = typedef integral_<decltype(_Tp1() & _Tp2()), _Tp1() & _Tp2()> |
Definition at line 208 of file operations.h.
| using utl::meta::bitnot_ = typedef integral_<typename _T::value_type, (typename _T::value_type)(~_T())> |
Bitwise operations requires IntegralConstant(_Tp)
Definition at line 205 of file operations.h.
| using utl::meta::bitor_ = typedef integral_<decltype(_Tp1() | _Tp2()), _Tp1() | _Tp2()> |
Definition at line 211 of file operations.h.
| using utl::meta::bitxor_ = typedef integral_<decltype(_Tp1() ^ _Tp2()), _Tp1() ^ _Tp2()> |
Definition at line 215 of file operations.h.
| using utl::meta::bool_ = typedef integral_<bool, v> |
bool_ type: integral constant wrapper for bool
Wrappers for basic types
Definition at line 66 of file integral.h.
| using utl::meta::cat = typedef eval< cat_impl::cat_<Lists...> > |
Transformation that concatenates several lists into a single typelist. The parameters must all be instantiations of meta::typelist. Complexity:
where
is the number of lists passed to the algorithm.
Definition at line 338 of file typelist.h.
| using utl::meta::char_ = typedef integral_<char, v> |
char_ type: integral constant wrapper for char
Definition at line 94 of file integral.h.
| using utl::meta::comp_eq = typedef bool_<_Tp1() == _Tp2()> |
Comparison operations requires IntegralConstant(_Tp)
Definition at line 184 of file operations.h.
| using utl::meta::comp_ge = typedef not_<comp_lt<_Tp1, _Tp2> > |
Greater or equal.
Definition at line 195 of file operations.h.
| using utl::meta::comp_gt = typedef comp_lt <_Tp2, _Tp1> |
Greater than.
Definition at line 191 of file operations.h.
| using utl::meta::comp_le = typedef not_<comp_lt<_Tp2, _Tp1> > |
Less or equal.
Definition at line 193 of file operations.h.
| using utl::meta::comp_lt = typedef bool_<(_Tp1() < _Tp2())> |
Definition at line 186 of file operations.h.
| using utl::meta::comp_ne = typedef not_<comp_eq<_Tp1, _Tp2> > |
Not equal.
Definition at line 189 of file operations.h.
| using utl::meta::compose = typedef detail::compose_<Fns...> |
| using utl::meta::compose_f = typedef detail::compose_f_<Fns...> |
| using utl::meta::count = typedef count_if<List, same_as<T> > |
Count all occurrences of type T int List
Definition at line 761 of file typelist.h.
| using utl::meta::count_if = typedef eval< count_if_impl::count_if_<List, Pred, 0> > |
Count all Items on the List for which the predicate Pred returns true_ when eval<invoke<Pred, Item>>
Complexity 
| List | A typelist |
| Pred | A Unary invocable predicate |
Definition at line 755 of file typelist.h.
| using utl::meta::dec = typedef add<_Tp, int_<-1> > |
decrease
Definition at line 173 of file operations.h.
| using utl::meta::defer = typedef if_< detail::is_applicable_<F, Ts...>, detail::defer_<F, Ts...>, nil_ > |
defer alias template for F<Ts...>
| using utl::meta::defer_i = typedef if_ < detail::is_applicable_i_<T, F, Is...>, detail::defer_i_<T, F, Is...>, nil_ > |
defer_i alias template for F<T, Is...>
| using utl::meta::detected_or_t = typedef eval < detail::detected_or<Default, Op, Args...> > |
Definition at line 172 of file detection.h.
| using utl::meta::detected_t = typedef eval < detail::detector<nat_, void, Op, Args...> > |
Definition at line 146 of file detection.h.
| using utl::meta::divide = typedef integral_< decltype(_Tp2() / _Tp2()), _Tp1() / _Tp2() > |
Division.
Definition at line 156 of file operations.h.
| using utl::meta::empty = typedef bool_<List::empty()> |
An Boolean constant wrapper that returns if the typelist is empty
Complexity
.
| List | A typelist |
Definition at line 140 of file typelist.h.
| using utl::meta::enable_if = typedef std::enable_if<If, _Tp> |
| using utl::meta::enable_if_t = typedef eval< enable_if<If, _Tp> > |
| using utl::meta::eval = typedef typename Tp::type |
Type alias for Tp::type. Used to evaluate/extract return type of metafunctions.
Definition at line 49 of file integral.h.
| using utl::meta::false_ = typedef bool_<false> |
The type used as a compile-time boolean with false value.
Definition at line 69 of file integral.h.
| using utl::meta::filter = typedef eval< filter_impl::filter_<List, Pred, typelist<> > > |
Return a new typelist with elements, the elements of List that satisfy the invocable Pred such that eval<invoke<Pred, Item>> is true_
Complexity 
| List | The input typelist |
| Pred | A unary invocable predicate |
Definition at line 800 of file typelist.h.
| using utl::meta::find = typedef find_if<List, same_as<T> > |
Search for the first occurrence of type T on a List
Definition at line 663 of file typelist.h.
| using utl::meta::find_if = typedef eval< find_if_impl::find_if_<List, Pred, 0> > |
Search for the first Item on the List for which the predicate Pred returns true_ when eval<invoke<Pred, Item>>
Complexity 
| List | A typelist |
| Pred | A Unary invocable predicate |
Definition at line 657 of file typelist.h.
| using utl::meta::fold = typedef eval<fold_impl::fold_<List, V, Fn> > |
Definition at line 383 of file typelist.h.
| using utl::meta::front = typedef eval< front_impl::front_<List> > |
Return the first element in meta::typelist List. Complexity
.
Definition at line 274 of file typelist.h.
| using utl::meta::identity_t = typedef eval<identity<_Tp> > |
identity type alias
| using utl::meta::inc = typedef add<_Tp, int_<1> > |
Increase.
Definition at line 169 of file operations.h.
| using utl::meta::index_ = typedef integral_<index_t, v> |
index_ type: integral constant wrapper for index_t a.k.a std::size_t
Definition at line 106 of file integral.h.
| using utl::meta::index_sequence = typedef integer_sequence<index_t, Idx...> |
Alias template index_sequence.
Definition at line 136 of file integral.h.
| using utl::meta::index_sequence_for = typedef make_index_sequence<sizeof...(Types)> |
Alias template index_sequence_for.
Definition at line 144 of file integral.h.
| using utl::meta::int16_ = typedef integral_<int16_t, v> |
int16_ type: integral constant wrapper for int16_t
Definition at line 80 of file integral.h.
| using utl::meta::int32_ = typedef integral_<int32_t, v> |
int32_ type: integral constant wrapper for int32_t
Definition at line 87 of file integral.h.
| using utl::meta::int8_ = typedef integral_<int8_t, v> |
int8_ type: integral constant wrapper for int8_t
Definition at line 73 of file integral.h.
| using utl::meta::int_ = typedef integral_<int, v> |
int_ type: integral constant wrapper for int
Definition at line 98 of file integral.h.
| using utl::meta::integer_sequence = typedef std::integer_sequence<Tp, Ints...> |
integer sequence
Definition at line 129 of file integral.h.
| using utl::meta::integral_ = typedef std::integral_constant<Tp, v> |
integral_ Integral Constant is a holder class for a compile-time value of an integral type. Every Integral Constant is also a null-ary Metafunction, returning itself. An integral constant object is implicitly convertible to the corresponding run-time value of the wrapped integral type
Definition at line 58 of file integral.h.
| using utl::meta::invoke = typedef typename Fn::template apply<Args...> |
invoke, invoke_t
Invoke the nested apply meta-function from Fn with the arguments Args.
| using utl::meta::invoke_t = typedef eval< invoke <Fn, Args...> > |
Evaluate the invocation of the nested apply metafunction from Fn with the arguments Args.
| using utl::meta::is_applicable_it = typedef eval< detail::is_applicable_i_<T, F, Is...> > |
check if we can instantiate F with parameters Is of type T
| using utl::meta::is_applicable_qt = typedef eval < detail::is_applicable_q_ <Q, T...> > |
check if we can invoke Q with parameters T
| using utl::meta::is_applicable_t = typedef eval< detail::is_applicable_<F, T...> > |
check if we can instantiate F with parameters T
| using utl::meta::is_detected = typedef typename detail::detector<nat_, void, Op, Args...>::detected |
Definition at line 118 of file detection.h.
| using utl::meta::is_detected_convertible = typedef eval < std::is_convertible< detected_t<Op, Args...>, To > > |
Definition at line 231 of file detection.h.
| using utl::meta::is_detected_exact = typedef eval < same_<Expected, detected_t<Op, Args...> > > |
Definition at line 199 of file detection.h.
| using utl::meta::long_ = typedef integral_<long, v> |
long_ type: integral constant wrapper for long
Definition at line 102 of file integral.h.
| using utl::meta::make_index_sequence = typedef make_integer_sequence <index_t, Num> |
Alias template make_index_sequence.
Definition at line 140 of file integral.h.
| using utl::meta::make_integer_sequence = typedef std::make_integer_sequence<Tp, Num> |
Definition at line 132 of file integral.h.
| using utl::meta::modulo = typedef integral_< decltype(_Tp1() % _Tp2()), _Tp1() % _Tp2() > |
Modulo.
Definition at line 162 of file operations.h.
| using utl::meta::mult = typedef integral_< decltype(_Tp2() * _Tp2()), _Tp1() * _Tp2() > |
Multiplication.
Definition at line 150 of file operations.h.
| using utl::meta::negate = typedef integral_<decltype(-_Tp()), -_Tp()> |
Negation.
Math operations requires IntegralConstant(_Tp)
Definition at line 138 of file operations.h.
| using utl::meta::none_of = typedef empty< filter <List, Pred> > |
Returns true_ if Pred returns false_ for all the elements in the List or if the List is empty and false otherwise.
Definition at line 875 of file typelist.h.
| using utl::meta::Npos = typedef size_<index_t(-1)> |
The last position we can express for indexing.
Definition at line 124 of file integral.h.
| using utl::meta::pair = typedef typelist<T1, T2> |
pair A special typelist with only 2 Types
Definition at line 145 of file typelist.h.
| using utl::meta::pop_back = typedef eval < pop_back_impl::pop_back_<List> > |
Return a new typelist by removing the last element from the List. Complexity
.
Definition at line 526 of file typelist.h.
| using utl::meta::pop_front = typedef eval< pop_front_impl::pop_front_<List> > |
Return a new typelist by removing the first element from the front of List. Complexity
Definition at line 502 of file typelist.h.
| using utl::meta::push_back = typedef eval< apply < bind_back<quote<typelist>, Ts...>, List > > |
Return a new typelist by adding the elements Ts to the back of List. Complexity
Definition at line 461 of file typelist.h.
| using utl::meta::push_front = typedef eval< apply < bind_front<quote<typelist>, Ts...>, List > > |
Return a new typelist by adding the elements Ts to the front of List. Complexity
Definition at line 450 of file typelist.h.
| using utl::meta::repeat = typedef repeat_c<N::type::value, Ts...> |
A wrapper to typelist<>::times<> utility for integral_c argument N
Definition at line 161 of file typelist.h.
| using utl::meta::repeat_c = typedef typename typelist<Ts...>::template times<N> |
repeat
A wrapper to typelist<>::times<> utility for integer argument N
Definition at line 155 of file typelist.h.
| using utl::meta::replace = typedef eval < replace_if <List, same_as<T>, U> > |
Alias wrapper that returns a new typelist where all instances of type T have been replaced with U.
Definition at line 848 of file typelist.h.
| using utl::meta::replace_if = typedef eval< replace_if_impl::replace_if_<List, Pred, T, typelist<> > > |
Return a new typelist where all the instances for which the invocation ofPred returns true_, are replaced with T
Complexity 
| List | The input typelist |
| Pred | A unary invocable predicate |
| T | The new type to replace the item of the List, when eval<invoke<Pred, Item>> returns true_ |
Definition at line 841 of file typelist.h.
| using utl::meta::rev_fold = typedef eval< rev_fold_impl::rev_fold_<List, V, Fn> > |
Definition at line 438 of file typelist.h.
| using utl::meta::reverse = typedef eval< reverse_impl::reverse_<List> > |
Return a new typelist by reversing the elements in the list List. Complexity
Definition at line 479 of file typelist.h.
| using utl::meta::seek = typedef seek_if <List, same_as<T> > |
Search for the first Item on the List of type T and return the rest of the List starting from that position as new typelist
Definition at line 711 of file typelist.h.
| using utl::meta::seek_if = typedef eval< seek_if_impl::seek_if_<List, Pred, 0> > |
Search for the first Item on the List for which the predicate Pred returns true_ when eval<invoke<Pred, Item>> and return the rest of the List starting from that position as new typelist
Complexity 
| List | A typelist |
| Pred | A Unary invocable predicate |
Definition at line 705 of file typelist.h.
| using utl::meta::shift_left = typedef integral_<typename _Tp::value_type, (typename _Tp::value_type)(_Tp() << shift())> |
Definition at line 218 of file operations.h.
| using utl::meta::shift_right = typedef integral_<typename _Tp::value_type, (typename _Tp::value_type)(_Tp() > > shift())> |
Definition at line 221 of file operations.h.
| using utl::meta::size = typedef size_<List::size()> |
An integral constant wrapper that is the size of the meta::typelist
Complexity
.
| List | A typelist |
Definition at line 129 of file typelist.h.
| using utl::meta::size_ = typedef integral_<size_t, v> |
size_ type: integral constant wrapper for size_t a.k.a std::size_t
Definition at line 110 of file integral.h.
| using utl::meta::sizeof_ = typedef size_<sizeof(Tp)> |
Computes the size of the type Tp. Complexity
.
Definition at line 115 of file integral.h.
| using utl::meta::sub = typedef add<_Tp1, negate<_Tp2> > |
Substruction.
Definition at line 165 of file operations.h.
| using utl::meta::transform = typedef eval< transform_impl::transform_<typelist<Args...> > > |
Definition at line 568 of file typelist.h.
| using utl::meta::transform_lazy = typedef eval< transform_lazy_impl::transform_lazy_<typelist<Args...> > > |
Definition at line 614 of file typelist.h.
| using utl::meta::true_ = typedef bool_<true> |
The type used as a compile-time boolean with true value.
Definition at line 68 of file integral.h.
| using utl::meta::uint16_ = typedef integral_<uint16_t, v> |
uint16_ type: integral constant wrapper for uint16_t
Definition at line 83 of file integral.h.
| using utl::meta::uint32_ = typedef integral_<uint32_t, v> |
uint32_ type: integral constant wrapper for uint32_t
Definition at line 90 of file integral.h.
| using utl::meta::uint8_ = typedef integral_<uint8_t, v> |
uint8_ type: integral constant wrapper for uint8_t
Definition at line 76 of file integral.h.
| using utl::meta::use_if_all_t = typedef enable_if_t< and_<T1, Ts...>::value, T1 > |
| using utl::meta::use_if_any_t = typedef enable_if_t< or_<T1, Ts...>::value, T1 > |
| using utl::meta::use_if_not_same_t = typedef enable_if_t< !same_<_T1, _T2>::value, _Ret > |
| using utl::meta::use_if_same_t = typedef enable_if_t< same_<_T1, _T2>::value, _Ret > |
| using utl::meta::when = typedef eval< detail::when_<If> > |
| constexpr bool utl::meta::is_detected_convertible_v |
evaluates to true if evaluation of Op<Args...> is convertible to To and to false if not
Definition at line 237 of file detection.h.
| constexpr bool utl::meta::is_detected_exact_v = is_detected_exact< Expected, Op, Args...>::value |
evaluates to true if evaluation of Op<Args...> is Expected and to false if not
Definition at line 204 of file detection.h.
| constexpr bool utl::meta::is_detected_v = is_detected<Op, Args...>::value |
Detection predicate.
Definition at line 122 of file detection.h.