https://issues.dlang.org/show_bug.cgi?id=7128 --- Comment #22 from bearophile_hugs at eml.cc --- The 3-arguments cartesianPower!false overload can't be annotated with @nogc because the given buffer array can be shorter than the "power" argument. Unless you generate a run-time error in this case. --