On 03-08-2012 21:19, Alex Rønne Petersen wrote:
Hi,

This:

$ cat test.d
class A
{
     int i;

     invariant()
     {
         i = 42;
     }
}

Currently doesn't compile:

$ dmd test.d
test.d(7): Error: can only initialize const member i inside constructor

(Obviously this example is silly, but it's just meant to illustrate the
point of this thread.)

I believe this behavior is too strict. I don't agree that the language
should dictate what *my* invariant can and cannot do. Not to mention
that the standard library is far from const-friendly enough for this
strictness to be practically reasonable today (I have tons of cast()s in
my programs today due to this - not cool).

Does anyone else find this behavior too strict?


I should also mention that invariants weren't const until very recently, so this is also quite the breaking change...

--
Alex Rønne Petersen
[email protected]
http://lycus.org

Reply via email to