9 template <
typename... Ctx>
16 auto ws =
join(*
ctx.weightset()...);
25 template <
typename ValueSet,
typename... ValueSets>
27 typename ValueSet::value_t
29 const typename ValueSets::value_t&...
v)
31 return vs.tuple(v...);
38 template <
typename... ExpSets>
44 auto ids =
join(rss.identities()...);
57 template <
typename ExpSets,
size_t... I>
59 tuple_(
const std::vector<expression>& es,
78 template <
typename ExpSets>
84 return tuple_<ExpSets>(es, indices);
expression tuple_(const std::vector< expression > &es, vcsn::detail::index_sequence< I...>)
Bridge helper.
auto join(const ValueSet &vs) -> ValueSet
The join of a single valueset.
auto tuple_expressionset(const ExpSets &...rss) -> expressionset< decltype(tuple_context(rss.context()...))>
expression tuple_expression(const std::vector< expression > &es)
Bridge (tuple).
ValueSet::value_t tuple(const ValueSet &vs, const typename ValueSets::value_t &...v)
static dyn::context ctx(const driver &d)
Get the context of the driver.
Provide a variadic mul on top of a binary mul(), and one().
static identities ids(const driver &d)
Get the identities of the driver.
auto tuple_context(Ctx &&...ctx) -> context< tupleset< labelset_t_of< Ctx >...>, join_t< weightset_t_of< Ctx >...>>
decltype(join(std::declval< ValueSets >()...)) join_t
The type of the join of the ValueSets.
typename std::tuple_element< I, T >::type tuple_element_t
C++14.
weightset_mixin< rat::expressionset_impl< Context >> expressionset
tupleset< ValueSets...> make_tupleset(const ValueSets &...vss)
expression make_expression(const ExpSet &rs, const typename ExpSet::value_t &r)
std::shared_ptr< detail::expression_base > expression