template<class Op1 = CallNoOp<1>, class Op2 = CallNoOp<2>, class Op3 = CallNoOp<3>, class Op4 = CallNoOp<4>, class Op5 = CallNoOp<5>, class Op6 = CallNoOp<6>>
class grpc::CallOpSet< Op1, Op2, Op3, Op4, Op5, Op6 >
Primary implementaiton of CallOpSetInterface.
Since we cannot use variadic templates, we declare slots up to the maximum count of ops we'll need in a set. We leverage the empty base class optimization to slim this class (especially when there are many unused slots used). To avoid duplicate base classes, the template parmeter for CallNoOp is varied by argument position.
template<class Op1 = CallNoOp<1>, class Op2 = CallNoOp<2>, class Op3 = CallNoOp<3>, class Op4 = CallNoOp<4>, class Op5 = CallNoOp<5>, class Op6 = CallNoOp<6>>
void grpc::CallOpSet< Op1, Op2, Op3, Op4, Op5, Op6 >::FillOps |
( |
grpc_op * |
ops, |
|
|
size_t * |
nops |
|
) |
| |
|
inlinevirtual |