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.