immutable singleton pattern with static opCall

Michal Minich michal.minich at gmail.com
Sat Jun 26 17:19:44 PDT 2010


On Sun, 27 Jun 2010 09:36:04 +0930, Justin Johansson wrote:

> immutable class Foo
> {
>     static private Foo instance;
> 
>     static this() {			// line 9
>        instance = new Foo;
>     }
> 
>     static Foo opCall() {		// line 13
>        return instance;
>     }
> }
> 
> test.d(9): Error: function test.Foo._staticCtor2 without 'this' cannot
> be const/immutable
> test.d(13): Error: function test.Foo.opCall without 'this' cannot be
> const/immutable

there is bug report on this subject

http://d.puremagic.com/issues/show_bug.cgi?id=3598

Your example also uses static variable, which was not considered in the 
bug report. This makes things more complex to design properly, because it 
seems now that one does not want static functions to be affected by  
immutable attribute of class, but it should affect static data...


More information about the Digitalmars-d mailing list