Enum fusion?

This is definitely true. In essence, you are giving the users the choice between:

  • Keeping the pipeline long;
  • splitting the code into multiple macros rather than functions.

Both have obvious drawbacks.

But maybe there still are situations in which it is useful. After all, a pipeline of enumeration functions is usually more readable than a couple of hand-crafted for-loops.

I did some preliminary benchmarks which seemed to indicate that for a simple chain of multiple map operations with a reduce at the end, a single for is roughly ~20% faster. This seem promising, but more bench-marking is necessary to find out whether this still holds in slightly different situations.