> fails to compile for both integers and my defined types. > I read the "D Templates: A Tutorial" book and as far as I can tell > "++B.init" and "B.init < E.init" doesn't look too much wrong, but I've not > seen any constraint of this kind in phobos (using variables instead of > types) so I was wondering if doing something like this is actually bad or > even really bad. (And I also wonder how to properly setting those > constraints directly on types)
You could put the target code inside a anonymous block and use __traits(compiles, ...), like this: if (__traits(compiles, { B begin; E end; ++begin; bool stop = begin < end; })) I never hade any problem by using Type.init, that's strange.