14 template <
typename To,
typename From>
19 return static_cast<To
>(std::forward<From>(from));
21 return dynamic_cast<To
>(std::forward<From>(from));
30 template <Automaton Aut>
31 class automaton_wrapper;
33 using automaton = std::shared_ptr<detail::automaton_base>;
39 template <
typename Context>
40 class context_wrapper;
43 using context = std::shared_ptr<const detail::context_base>;
49 template <
typename ExpansionSet>
50 class expansion_wrapper;
52 using expansion = std::shared_ptr<const detail::expansion_base>;
58 template <
typename LabelSet>
61 using label = std::shared_ptr<const detail::label_base>;
66 class polynomial_base;
67 template <
typename PolynomialSet>
70 using polynomial = std::shared_ptr<const detail::polynomial_base>;
75 class expression_base;
76 template <
typename ExpSet>
77 class expression_wrapper;
79 using expression = std::shared_ptr<detail::expression_base>;
85 template <
typename WeightSet>
88 using weight = std::shared_ptr<const detail::weight_base>;
ValueSet::value_t tuple(const ValueSet &vs, const typename ValueSets::value_t &...v)
Aggregate a label and its labelset.
Implementation of labels are words.
std::shared_ptr< const detail::polynomial_base > polynomial
Aggregate a weight and its weightset.
std::shared_ptr< const detail::weight_base > weight
Implementation of labels are nullables (letter or empty).
std::shared_ptr< const detail::expansion_base > expansion
Provide a variadic mul on top of a binary mul(), and one().
To dyn_cast(From &&from)
A dynamic_cast in debug mode, static_cast with NDEBUG.
std::shared_ptr< const detail::label_base > label
std::shared_ptr< const detail::context_base > context
A dyn::context.
std::shared_ptr< detail::automaton_base > automaton
Aggregate a polynomial and its polynomialset.
Implementation of labels are ones: there is a single instance of label.
Implementation of labels are letters.
std::shared_ptr< detail::expression_base > expression