https://issues.dlang.org/show_bug.cgi?id=7128 --- Comment #21 from bearophile_hugs at eml.cc --- A third optional argument can be a "buffer" array, if it's large enough (as much as the "power" argument or larger), it gets used to make cartesianPower a @nogc function: cartesianPower!false([0, 1], 2, buffer) --