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

Reply via email to