次に例を示します。
int[] arr = [ 1, 2, 3, 4, 5 ];
auto foo = filter!("a < 3")(arr);
assert(foo == [ 1, 2 ]); // works fine
今私は述語をパラメータ化できるようにしたい、例えば
int max = 3;
int[] arr = [ 1, 2, 3, 4, 5 ];
auto foo = filter!("a < max")(arr); // doesn't compile
filter!() の述語は 1 つのパラメーターしか受け入れないため、このスニペットは明らかにコンパイルされません。古き良き for/foreach ループに頼らずに、この制限を克服する方法はありますか?