template constraint diagnostics
Vlad Levenfeld via Digitalmars-d
digitalmars-d at puremagic.com
Sat Oct 18 21:09:04 PDT 2014
I have something like this for mixin interfaces that require that
the host struct support certain semantics. There's a Traits
struct (concept-ish) that takes a set of strings for trait
identifiers and their definitions (which is some code that
compiles if and only if the trait is satisfied).
The Traits struct has a member mixin template, "require", which
can be used by the interface that instantiated the Traits. When
one of the mixed-in requirements is failed, the compiler
generates an error message like this:
source/evx/meta/traits/generator.d-mixin-49(50): Error: static
assert "MyStruct must support {size_t x = buffer.length;} to
enable TransferOps."
Not as nice as a compiler-aided concept solution but I have been
pretty happy with it so far. It doesn't take me long to forget
what some interface requirements are, and this way the compiler
can explicitly guide me.
More information about the Digitalmars-d
mailing list