21 template <
typename ExpansionSet>
27 template <
typename ExpansionSet>
35 template <
typename ExpansionSet>
73 using expansion = std::shared_ptr<const detail::expansion_base>;
75 template <
typename ExpansionSet>
79 const typename ExpansionSet::value_t&
expansion)
82 return std::make_shared<wrapper_t>(ps,
expansion);
const expansionset_t & expansionset() const
virtual ~expansion_wrapper()
const expansion_t expansion_
The expansion.
std::shared_ptr< const detail::expansion_base > expansion
To dyn_cast(From &&from)
A dynamic_cast in debug mode, static_cast with NDEBUG.
typename expansionset_t::value_t expansion_t
virtual symbol vname() const =0
A description of the expansion.
ExpansionSet expansionset_t
boost::flyweight< std::string, boost::flyweights::no_tracking, boost::flyweights::intermodule_holder > symbol
An internalized string.
expansion_wrapper(const expansionset_t &expansionset, const expansion_t &expansion)
virtual symbol vname() const override
A description of the expansion.
const expansionset_t expansionset_
The expansion set.
const expansion_t expansion() const
expansion make_expansion(const ExpansionSet &ps, const typename ExpansionSet::value_t &expansion)
Aggregate an expansion and its expansionset.