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).