dsimcha:
>The only solution I see would be to completely get rid of separate
>compilation.<
"All problems in computer science can be solved by another level of
indirection;"
-- David Wheeler
But that also slows code down a little :-)
--------------------
Bill Baxter:
Static interfaces are an easy idea, it was discussed some weeks ago, and
probably it's not too much hard to implement in the language. I like them
enough, but they don't add that much to the template constraints already
present, so it's mostly a duplication of syntax and semantics. So I am not sure
they are a good idea.
>static interface VConst(T) {
constnessOf(T) is in [const, immutable, !const];
}
VConst!(Bar) doSomething(VConst!(Bar) b, int y) {...}
static interface MaybeRef(T) {
refnessOf(T) is in [ref, !ref];
}
MaybeRef!(Bar) doSomethingElse(MaybeRef!(Bar) b, int y) { ... }<
Walter has just added traits to perform this, so I think this is already
doable, with __trait/meta. and template constraints.
The opIn_r defined for arrays is something that D2 must eventually have,
there's no doubt about this.
But "is in", followed by an array of those modifiers is currently impossible
(you may create a tuple of templates, where each template tests for constness,
etc). Maybe in future you can create an array of annotations:
[...@const, @immutable, @notConst]
Bye,
bearophile