This avoids temporary and memcpy call when computing large expressions.
It's basically some kind of poor man's expression template, but it seems easier
to maintain to have a single generic apply call instead of the whole
expression template machinery here.
clang-tidy: warning: invalid case style for parameter 'f' [readability-identifier-naming]
not useful
clang-format: please reformat the code