di 0.1.0
Loading...
Searching...
No Matches
algorithm.h File Reference

Go to the source code of this file.

Namespaces

namespace  di
 
namespace  di::meta
 

Typedefs

template<typename R, concepts::TypeList T>
using di::meta::AsLanguageFunction = Type<detail::AsLanguageFunction<R, T>>
 
template<typename T>
using di::meta::AsList = Type<detail::AsListHelper<T>>
 
template<template< typename... > typename Template, concepts::TypeList T>
using di::meta::AsTemplate = Type<detail::AsTemplateHelper<Template, T>>
 
template<concepts::TypeList T>
using di::meta::AsTuple = AsTemplate<vocab::Tuple, T>
 
template<concepts::TypeList... Lists>
using di::meta::Concat = Type<detail::ConcatHelper<Lists...>>
 
template<concepts::TypeList L, typename T>
using di::meta::PushFront = Concat<List<T>, L>
 
template<concepts::TypeList L, typename T>
using di::meta::PushBack = Concat<L, List<T>>
 
template<concepts::TypeList List>
using di::meta::Join = Apply<Quote<Concat>, List>
 
template<concepts::TypeList L>
using di::meta::PopFront = Type<detail::PopFrontHelper<L>>
 
template<concepts::TypeList L>
using di::meta::PopBack = Type<detail::PopBackHelper<L>>
 
template<concepts::TypeList List, typename Init, concepts::MetaInvocable MetaFn>
using di::meta::Fold = Type<detail::FoldHelper<List, Init, MetaFn>>
 
template<concepts::TypeList List, typename Init, concepts::MetaInvocable MetaFn>
using di::meta::FoldRight = Type<detail::FoldRightHelper<List, Init, MetaFn>>
 
template<concepts::TypeList List, concepts::MetaInvocable Pred>
using di::meta::Filter = Fold<List, meta::List<>, detail::FilterReducer<Pred>>
 
template<concepts::TypeList List, typename Needle, typename Replacement>
using di::meta::Replace = Fold<List, meta::List<>, detail::ReplaceReducer<Needle, Replacement>>
 
template<concepts::TypeList List, concepts::MetaInvocable Pred, typename Replacement>
using di::meta::ReplaceIf = Fold<List, meta::List<>, detail::ReplaceIfReducer<Pred, Replacement>>
 
template<concepts::TypeList List, typename Function>
using di::meta::Transform = detail::TransformHelper<List, Function>::Type
 
template<concepts::TypeList Lst>
using di::meta::Unique = Fold<Lst, List<>, detail::PushBackIfUnique>
 
template<concepts::TypeList T, concepts::TypeList U>
using di::meta::Zip = Type<detail::ZipHelper<T, U>>
 
template<typename T, usize N>
using di::meta::Repeat = Type<detail::RepeatHelper<T, N>>
 
template<concepts::TypeList... Types>
using di::meta::CartesianProduct = Type<detail::CartesianProductHelper<Types...>>
 
template<concepts::InstanceOfV< ListV >... Lists>
using di::meta::ConcatV = Type<detail::ConcatVHelper<Lists...>>
 
template<concepts::InstanceOfV< ListV > List>
using di::meta::ReverseV = Type<detail::ReverseVHelper<List>>
 
template<typename T, usize count>
using di::meta::MakeIntegerSequence = Type<detail::MakeIntegerSequenceHelper<T, count>>
 
template<usize count>
using di::meta::MakeIndexSequence = MakeIntegerSequence<usize, count>
 
template<usize count>
using di::meta::MakeReverseIndexSequence = ReverseV<MakeIntegerSequence<usize, count>>
 
template<typename... Types>
using di::meta::IndexSequenceFor = MakeIndexSequence<sizeof...(Types)>
 

Variables

template<concepts::TypeList List, concepts::MetaInvocable Pred>
constexpr bool di::meta::All = detail::AllHelper<Pred, List>::value