23 template <
typename PolynomialSet>
29 template <
typename PolynomialSet>
36 virtual bool empty()
const = 0;
40 template <
typename PolynomialSet>
41 class polynomial_wrapper final:
public polynomial_base
69 virtual bool empty()
const override
83 using polynomial = std::shared_ptr<const detail::polynomial_base>;
85 template <
typename PolynomialSet>
89 const typename PolynomialSet::value_t& p)
92 return std::make_shared<wrapper_t>(ps, p);
const polynomialset_t & polynomialset() const
virtual symbol vname() const override
A description of the polynomial.
const polynomial_t polynomial_
The polynomial.
const polynomial_t polynomial() const
Aggregate a polynomial and its polynomialset.
virtual ~polynomial_wrapper()
polynomial_wrapper(const polynomialset_t &ps, const polynomial_t &p)
virtual symbol vname() const =0
A description of the polynomial.
polynomial make_polynomial(const PolynomialSet &ps, const typename PolynomialSet::value_t &p)
PolynomialSet polynomialset_t
virtual bool empty() const override
Whether is zero.
boost::flyweight< std::string, boost::flyweights::no_tracking, boost::flyweights::intermodule_holder > symbol
An internalized string.
std::shared_ptr< const detail::polynomial_base > polynomial
const polynomialset_t polynomialset_
The polynomial set.
typename polynomialset_t::value_t polynomial_t
virtual bool empty() const =0
Whether is zero.
To dyn_cast(From &&from)
A dynamic_cast in debug mode, static_cast with NDEBUG.