25 template <
typename ExpSet>
32 template <
typename ExpSet>
41 template <
typename ExpSet>
78 using expression = std::shared_ptr<detail::expression_base>;
80 template <
typename ExpSet>
84 const typename ExpSet::value_t&
r)
87 return std::make_shared<wrapper_t>(
rs,
r);
virtual symbol vname() const override
A description of the expression type.
weightset_mixin< detail::r_impl > r
Aggregate an expression and its expressionset.
auto & as()
Extract wrapped typed expression.
expression_wrapper(const expressionset_t &rs, const expression_t &r)
auto & as() const
Extract wrapped typed expression.
Provide a variadic mul on top of a binary mul(), and one().
const expression_t expression() const
const expressionset_t & expressionset() const
boost::flyweight< std::string, boost::flyweights::no_tracking, boost::flyweights::intermodule_holder > symbol
An internalized string.
expression make_expression(const ExpSet &rs, const typename ExpSet::value_t &r)
const expression_t expression_
The expression.
std::shared_ptr< detail::expression_base > expression
typename expressionset_t::value_t expression_t
To dyn_cast(From &&from)
A dynamic_cast in debug mode, static_cast with NDEBUG.
const expressionset_t expressionset_
The expression set.