On Friday, 18 October 2013 at 09:08:53 UTC, Jonathan M Davis wrote:
On Friday, October 18, 2013 11:04:25 bearophile wrote:
simendsjo:
> See topic. Why is this not allowed? The function in question > is
> not virtual.
> > struct S { > > void someFunction() const {}
>     const invariant() { someFunction(); }
> > }
> void main() {
> > S s; > > }

It being not virtual is not important. In what cases is
invariant() called, simendsjo? I sense an infinite loop.

Yeah, it's probably because someFunction calls the invariant before and after it's called. If you want to call a member function from an invariant, it
should be static, or it should be a free function.

Ah, good point - stupid me :) I'll rather move some checking to pre/post contracts.

Reply via email to