12 template <
typename To,
typename From>
17 return static_cast<To
>(std::forward<From>(from));
19 return dynamic_cast<To
>(std::forward<From>(from));
28 template <
typename Aut>
29 class automaton_wrapper;
31 using automaton = std::shared_ptr<detail::automaton_base>;
37 template <
typename Context>
38 class context_wrapper;
41 using context = std::shared_ptr<const detail::context_base>;
47 template <
typename Aut>
48 class expansion_wrapper;
50 using expansion = std::shared_ptr<const detail::expansion_base>;
59 using label = std::shared_ptr<const detail::label_base>;
64 class polynomial_base;
65 template <
typename PolynomialSet>
68 using polynomial = std::shared_ptr<const detail::polynomial_base>;
73 class expression_base;
74 template <
typename ExpSet>
75 class expression_wrapper;
77 using expression = std::shared_ptr<detail::expression_base>;
86 using weight = std::shared_ptr<const detail::weight_base>;
Implementation of labels are letters.
std::shared_ptr< const detail::label_base > label
std::shared_ptr< const detail::context_base > context
A dyn::context.
Aggregate a polynomial and its polynomialset.
ValueSet::value_t tuple(const ValueSet &vs, const typename ValueSets::value_t &...v)
std::shared_ptr< const detail::weight_base > weight
Provide a variadic mul on top of a binary mul(), and one().
Implementation of labels are ones: there is a single instance of label.
std::shared_ptr< detail::automaton_base > automaton
std::shared_ptr< const detail::expansion_base > expansion
std::shared_ptr< const detail::polynomial_base > polynomial
Aggregate a label and its labelset.
std::shared_ptr< detail::expression_base > expression
Aggregate a weight and its weightset.
Implementation of labels are words.
To dyn_cast(From &&from)
A dynamic_cast in debug mode, static_cast with NDEBUG.
Implementation of labels are nullables (letter or empty).