Let's not make invariants const

Alex Rønne Petersen alex at lycus.org
Mon Aug 6 11:07:58 PDT 2012


On 06-08-2012 19:57, deadalnix wrote:
> Le 05/08/2012 11:47, Simen Kjaeraas a écrit :
>> On Sun, 05 Aug 2012 11:36:56 +0200, Jakob Ovrum <jakobovrum at gmail.com>
>> wrote:
>>
>>> On Friday, 3 August 2012 at 19:19:24 UTC, Alex Rønne Petersen wrote:
>>>> Does anyone else find this behavior too strict?
>>>
>>> Yes. Sounds like yet another case of forcing bitwise const on
>>> something that should only be logically const.
>>>
>>> Please stop forcing bitwise constancy on everything. Not everything
>>> needs to work with immutable, it should be opt-in (which in this case
>>> could mean explicitly marking the invariant as const) for any type.
>>
>> I was about to argue that non-const invariants could not be called when
>> calling const or immutable member functions, but then it hit me that
>> those shouldn't be able to influence the state checked by the invariant
>> anyway.
>>
>
> That is a very good point. Should invariant run on const/immutable
> method calls ?

They should.

In the real world, things are not as nice as const and immutable would 
have you believe. Things can be modified indirectly by the invariant 
(through a global variable for example), or even by another thread. We 
need invariants to run as often as possible to catch problems like these 
instead of pretending they don't exist.

-- 
Alex Rønne Petersen
alex at lycus.org
http://lycus.org


More information about the Digitalmars-d mailing list