On Friday, 20 December 2013 at 16:40:23 UTC, monarch_dodra wrote:
Everything works as it should, but according to "D Templates:
A Tutorial" book, you should not use arguments in constraints.
That's news to me.
It seems strange to me too, but: page 69 on the PDF:
"Do not use argument in your constraint. If you need a value of
type T, use T.init."
Since I don't know D really well, I thought something was wrong
with it.
That's normal, because "T.init" is not an lvalue.
Right! I was suspecting something like this.
That said:
Seems perfectly legit to me.
Then I'll probably stick to it. It's simple, easy to understand,
and works.
Or maybe the __traits(compiles) actually looks even better.
"B" is a type, so "++B" will always resolve to "__error", unless
you've implemented a static operator (not sure if even legal?).
Best part is: ++B actually works, it's the B < E that fails. But
they both smelled bad.
Perhaps ++B is some kind of accept-invalid bug then?