"Value class instance" pattern?
    bearophile 
    bearophileHUGS at lycos.com
       
    Sun Jul 14 08:17:41 PDT 2013
    
    
  
Dicebot:
> Hm, actually naive scoped usage seems to work for me:
>
> ---------------------------------------
> import std.typecons;
>
> class B
> {
> 	byte a;
> }
>
> class A
> {
> 	typeof(scoped!B()) b = void;
> 	
> 	this()
> 	{
> 		b = scoped!B();
> 	}
> }
Good. If I comment away most tags it seems to work:
import std.typecons;
const class Foo {
     int x;
     this(int xx) const pure nothrow {
         this.x = x;
     }
}
/*const*/ class Bar {
     /*const*/ typeof(scoped!Foo(1)) f = void;
     this(int x) /*const pure nothrow*/ {
         // f = typeof(f)(x); // Can't be used.
         f = scoped!Foo(x);
     }
}
void main() {
     auto b = new Bar(10);
}
I will try it in my code to see if and how well it works.
I have seen code like this:
class Bar {
     const int[1000] x = void;
     this(int n) {
         x[] = n;
     }
}
void main() {}
That gives me:
test.d(2): Warning: const field with initializer should be 
static, __gshared, or an enum
test.d(4): Error: slice x[] is not mutable
Are those error messages right?
Bye,
bearophile
    
    
More information about the Digitalmars-d
mailing list