On Wednesday, 29 July 2015 at 14:51:52 UTC, Atila Neves wrote:
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

If you write:

@satisfies!(isInputRange, MyRange) struct MyRange { ... }

the UDA can check it self, it really works as expected. Which is why I suggested a way to get whatever the UDA is attached to automatically in my other post.

Reply via email to