struct Reduce##op##Continuation final { \
explicit Reduce##op##Continuation(Next* _this) : this_(_this) {} \
using Op = op##Op; \
auto ReduceInputGraph(OpIndex ig_index, const op##Op& operation) { \
return this_->ReduceInputGraph##op(ig_index, operation); \
} \
template <typename... Args> \
auto Reduce(Args...
args)
const { \
return this_->Reduce##op(
args...); \
} \
Next* this_; \
}; \
auto ReduceInputGraph##op(OpIndex ig_index, const op##Op& operation) { \
return static_cast<Reducer<Next>*>(this) \
->template ReduceInputGraphOperation<op##Op, \
Reduce##op##Continuation>( \
ig_index, operation); \
} \
template <typename... Args> \
auto Reduce##op(Args...
args) { \
return static_cast<Reducer<Next>*>(this) \
->template ReduceOperation<Opcode::k##op, Reduce##op##Continuation>( \
}
base::Vector< const DirectHandle< Object > > args