13 using base_t = std::remove_cv_t<std::remove_reference_t<T>>;
29 #define DEFINE(Type) \ 32 template <typename ValueSet, typename = void_t<>> \ 33 struct Type ## _of_impl; \ 35 template <typename ValueSet> \ 36 struct Type ## _of_impl<ValueSet, \ 37 void_t<typename ValueSet::Type>> \ 39 using type = typename ValueSet::Type; \ 42 template <typename ValueSet> \ 43 struct Type ## _of_impl<std::shared_ptr<ValueSet>, \ 44 void_t<typename ValueSet::Type>> \ 46 using type = typename ValueSet::Type; \ 49 template <typename ValueSet> \ 50 struct Type ## _of_impl<ValueSet*, \ 51 void_t<typename ValueSet::Type>> \ 53 using type = typename ValueSet::Type; \ 57 template <typename ValueSet> \ 59 = typename detail::Type ## _of_impl<base_t<ValueSet>>::type 80 template <
typename Aut,
typename Context = context_t_of<Aut>>
82 =
typename Aut::element_type::template fresh_automaton_t<Context>;
84 template <
typename ValueSet>
88 template <
typename ValueSet>
93 template <
typename LS1,
typename LS2>
99 template <
typename... LS1,
typename... LS2>
101 : std::is_same<typename tupleset<LS1...>::template valueset_t<sizeof...(LS1) - 1>,
102 typename tupleset<LS2...>::template valueset_t<0>>
106 template <
typename Ctx1,
typename Ctx2 = Ctx1>
116 template <
typename ValueSet>
126 template <
typename LabelSet>
129 constexpr
static auto value = 0;
Provide a variadic mul on top of a binary mul(), and one().
Whether two contexts are composable.
typename labelset_t_of< base_t< ValueSet > >::letter_t letter_t_of
typename detail::labelset_t_of_impl< base_t< ValueSet > >::type labelset_t_of
std::remove_cv_t< std::remove_reference_t< T > > base_t
T without reference or const/volatile qualifiers.
typename labelset_t_of< base_t< ValueSet > >::word_t word_t_of
Whether a ValueSet, or a context, is multitape.
Whether two labelsets are composable.
typename Aut::element_type::template fresh_automaton_t< Context > fresh_automaton_t_of
Given an automaton type, the type of its copies.
#define DEFINE(Type)
Extract various ValueSets/Value types from objects, or pointers to objects.