void Show::visit_tuple(Tuple& x) { do_("Tuple", x, [&, this] { _w.Key("elements"); _w.StartArray(); for (auto& elem : x.elements) { elem->accept(*this); } _w.EndArray(); }); }
R do_(M<A> task, Tasks... tasks) { return bind(task, arr<A,R>([=](A a) { return do_(tasks...); })); }
BOOST_FORCEINLINE result_t operator() ( A0 const& a0, A1 i) const { return do_(a0,i, typename A0::storage_kind{}); }