On Wednesday, 29 July 2015 at 08:25:04 UTC, Roland Hadinger wrote:
On Tuesday, 28 July 2015 at 12:49:17 UTC, Atila Neves wrote:
So... instead of having traits / concepts, what I wanted from
D is to be able to do this:
struct MyRange: isInputRange { ... }
+1
or
struct MyRange: static isInputRange { ... } // that way
classes could do this too
What about this instead:
@satisfies(isInputRange) struct MyRange { ... }
which is not as terse, but maybe less confusing, because
intuitively ':' could be mistaken to mean 'extends'.
'static' has too many meanings already for my taste. I really
don't like it when frequently used keywords are reused to mean
different things in slightly different places.
That looks nice, but who's going to check it? UDAs have to be
reflected on to well, do anything. At least a template mixin will
cause a static assert to fail.
Atila