inline typename right_type<Op>::const_reference right(Op const &op) { return op.cast().right; }
inline typename arg_type<Op>::const_reference arg(Op const &op) { return op.cast().arg; }
inline typename left_type<Op>::const_reference left(Op const &op) { return op.cast().left; }