digitalmars.D - The new invariant.
- Chris Nicholson-Sauls (13/13) Mar 25 2007 A couple of quick questions about the upcoming 'invariant' type construc...
- Andrei Alexandrescu (See Website For Email) (6/22) Mar 25 2007 The latter.
- Chris Nicholson-Sauls (5/28) Mar 25 2007 Sweet. This sort of thing alone will make the new const'ness material w...
A couple of quick questions about the upcoming 'invariant' type constructor.
Given a
class Foo, will there be a way to mark the class as having only invariant
instances? Ie
can I declare it as 'invariant class Foo {}' much as 'scope class Foo {}' would
make it
RAII-only?
Second, say I want to make an associative array of invariant Foo instances.
How would I
declare this? (Let's use int as the key type, for simplicity.)
invariant Foo[int] pool ; // reads to me as the AA type is invariant, which is
useless
invariant(Foo)[int] pool ; // perhaps? like with the new const()?
This would be quite nifty for one of my projects, if it works like I expect.
private static invariant(Symbol)[invariant(char[])] pool ;
It'd be beautiful. Though I still worry a little about the current invariant{}
contract
being broken.
-- Chris Nicholson-Sauls
Mar 25 2007
Chris Nicholson-Sauls wrote:A couple of quick questions about the upcoming 'invariant' type constructor. Given a class Foo, will there be a way to mark the class as having only invariant instances? Ie can I declare it as 'invariant class Foo {}' much as 'scope class Foo {}' would make it RAII-only?Yes.Second, say I want to make an associative array of invariant Foo instances. How would I declare this? (Let's use int as the key type, for simplicity.) invariant Foo[int] pool ; // reads to me as the AA type is invariant, which is useless invariant(Foo)[int] pool ; // perhaps? like with the new const()?The latter.This would be quite nifty for one of my projects, if it works like I expect. private static invariant(Symbol)[invariant(char[])] pool ;That too. Possibly we'll also alias invariant(char[]) to string.It'd be beautiful. Though I still worry a little about the current invariant{} contract being broken.We're looking into it. Andrei
Mar 25 2007
Andrei Alexandrescu (See Website For Email) wrote:Chris Nicholson-Sauls wrote:Nice.A couple of quick questions about the upcoming 'invariant' type constructor. Given a class Foo, will there be a way to mark the class as having only invariant instances? Ie can I declare it as 'invariant class Foo {}' much as 'scope class Foo {}' would make it RAII-only?Yes.Sweet. This sort of thing alone will make the new const'ness material well worthwhile for myself. -- Chris Nicholson-SaulsSecond, say I want to make an associative array of invariant Foo instances. How would I declare this? (Let's use int as the key type, for simplicity.) invariant Foo[int] pool ; // reads to me as the AA type is invariant, which is useless invariant(Foo)[int] pool ; // perhaps? like with the new const()?The latter.This would be quite nifty for one of my projects, if it works like I expect. private static invariant(Symbol)[invariant(char[])] pool ;That too. Possibly we'll also alias invariant(char[]) to string.
Mar 25 2007








Chris Nicholson-Sauls <ibisbasenji gmail.com>