dsimcha wrote: ... >> My suggestion is to include a mixin for unrolling loops. > > I thought about this. Simple loop unrolling doesn't seem like a very useful > optimization on modern hardware because branch prediction and pipelining have > gotten so good. It can still be useful if you also change the loop body a > little, for example using multiple accumulators to increase instruction level > parallelism, > but this is hard to write generically. I can't think of a way to write such a > mixin such that it would be both generic and useful.
Probably not for performance, but as a utility for metaprogramming I find it sometimes convenient. The loop index would be written as a literal and thus can be used as a compile time constant. I think in phobos recursive templates are the way to do this? I have hacked something like this, the '@' will be replaced with the loop index: enum someConstarray = makeConstArray(); mixin(unroll( 0, someConstarray.length, q{ processMember!(someconstarr...@])() })); >> Also something like >> defineEnum, but for generating bitflags. (I have some code for this). > > Can you give an example? I'm not sure what you mean. I have this example from an earlier discussion, I think with bearophile: mixin( defineBitflags("Todo", q{ do_nothing, walk_dog, cook_breakfast, morning_task = walk_dog | cook_breakfast }) ); turns into: enum Todo { do_nothing = 1, walk_dog = 2, cook_breakfast = 4, morning_task = walk_dog | cook_breakfast } With some bit twiddling you can actually create a range for it too, to iterate all the flags set. >> I would >> also like to see a mixin for generating the boilerplate for decorator >> forwarding, which is annoying. This should be not that hard with the existing >> code in std.typecons. > > Shouldn't opDispatch basically handle this for you? I think that's one reason > why it was created. Not exactly, i don't think you can implement an interface with opDispatch. But perhaps this is too fringe for phobos which isn't exactly big on OOP anyway. >> The dranges project at dsource is awesome, it wouldn't hurt to put >> some of that good stuff in phobos. > > Agreed. It's Philippe Sigaud's project and he's been recently added to the > roster > of Phobos devs. I assume he intends to integrate at least the more generally > useful parts of dranges eventually. I hope so.