17 template <
size_t Tape,
24 "project: tape index out of bounds");
25 return {
ctx.labelset()->template set<Tape>(), *
ctx.weightset()};
30 template <
size_t Tape,
36 static_assert(Tape == 0,
37 "project: cannot extract non-0 tape from a non tupleset"
50 template <
size_t Tape,
typename Context>
54 return {make_project_context<Tape>(
rs.context()),
64 template <
typename Context,
typename Tape>
68 auto& c = ctx->as<Context>();
69 return make_context(vcsn::detail::make_project_context<Tape::value>(c));
std::shared_ptr< const detail::context_base > context
A dyn::context.
context make_context(const std::string &name)
Bridge.
typename std::enable_if< Cond, T >::type enable_if_t
A simple placeholder for integral constants.
context project_context(const context &ctx, integral_constant)
Bridge (project).
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().
size_t size(const ExpSet &rs, const typename ExpSet::value_t &r)
auto make_project_context(const context< LabelSet, WeightSet > &ctx) -> enable_if_t< context< LabelSet, WeightSet >::is_lat, project_context< Tape, context< LabelSet, WeightSet >>>
The resulting apparent context when keeping only tape Tape.
auto make_project(const expressionset< Context > &rs) -> expressionset< decltype(make_project_context< Tape >(rs.context()))>