14 template <
typename... Ctx>
21 auto ws =
join(*
ctx.weightset()...);
34 template <
typename Contexts,
size_t... I>
36 tuple_(
const std::vector<context>& cs,
44 template <
typename Contexts>
50 return tuple_<Contexts>(cs, indices);
59 template <
typename... ExpansionSets>
71 template <
typename ValueSet,
typename... ValueSets>
72 typename ValueSet::value_t
74 const typename ValueSets::value_t&...
v)
76 return vs.tuple(v...);
83 template <
typename... ExpSets>
89 auto ids =
join(rss.identities()...);
102 template <
typename ExpansionSets,
size_t... I>
114 vcsn::tuple<decltype(xs), tuple_element_t<I, ExpansionSets>...>
116 es[I]->template as<tuple_element_t<I, ExpansionSets>>()
121 template <
typename ExpansionSets>
127 return tuple_<ExpansionSets>(es, indices);
141 template <
typename ExpSets,
size_t... I>
143 tuple_(
const std::vector<expression>& es,
151 vcsn::tuple<decltype(rs), tuple_element_t<I, ExpSets>...>
154 ->template as<tuple_element_t<I, ExpSets>>().value()...)};
158 template <
typename ExpSets>
164 return tuple_<ExpSets>(es, indices);
174 template <
typename... PolynomialSets>
193 template <
typename PolynomialSet,
size_t... I>
195 tuple_(
const std::vector<polynomial>& polys,
203 vcsn::tuple<decltype(ps), tuple_element_t<I, PolynomialSet>...>
206 ->template as<tuple_element_t<I, PolynomialSet>>().value()...)};
210 template <
typename PolynomialSets>
216 return tuple_<PolynomialSets>(ps, indices);
value_impl< detail::expansion_tag > expansion
expression tuple_expression(const std::vector< expression > &es)
Bridge (tuple).
static identities ids(const driver &d)
Get the identities of the driver.
auto tuple_polynomialset(const PolynomialSets &...pss) -> polynomialset< decltype(tuple_context(pss.context()...))>
ValueSet::value_t tuple(const ValueSet &vs, const typename ValueSets::value_t &...v)
decltype(join(std::declval< ValueSets >()...)) join_t
The type of the join of the ValueSets.
Provide a variadic mul on top of a binary mul(), and one().
context tuple_context(const std::vector< context > &cs)
Bridge (tuple).
tupleset< ValueSets... > make_tupleset(const ValueSets &...vss)
Template-less root for contexts.
automaton tuple_(const std::vector< automaton > &as, vcsn::detail::index_sequence< I... >)
Bridge helper.
auto tuple_expansionset(const ExpansionSets &...ess) -> rat::expansionset< decltype(tuple_expressionset(ess.expressionset()...))>
typename std::tuple_element< I, T >::type tuple_element_t
C++14.
auto tuple_expressionset(const ExpSets &...rss) -> expressionset< decltype(tuple_context(rss.context()...))>
auto join(const ValueSet &vs) -> ValueSet
The join of a single valueset.
value_impl< detail::expression_tag > expression
auto tuple_context(Ctx &&...ctx) -> context< tupleset< labelset_t_of< Ctx >... >, join_t< weightset_t_of< Ctx >... >>
polynomial tuple_polynomial(const std::vector< polynomial > &ps)
Bridge (tuple).
value_impl< detail::polynomial_tag > polynomial
expansion tuple_expansion(const std::vector< expansion > &es)
Bridge (tuple).