Michel Fortin Wrote: > class Test { > void doThat() immutable {} > void doThat() const {} > void doThat() {} > void doThat() shared immutable {} > void doThat() shared const {} > void doThat() shared {} > > void doSomething() inout // or vconst > { > doThat(); // which doThat does it call? > } > }
Const function will be called. I replied about sharing in another post. > class Test { > void doThat() immutable {} > void doThat() shared immutable {} > > void doSomething() inout // or vconst > { > doThat(); // which doThat does it call? > } > } It's a compile-time error: vconst is orthogonal to immutable, so you can't pass vconst(this) as immutable(this). Immutable methods are callable only on immutable data. Period.