On 04/15/2012 11:04 PM, Simon wrote:
On 15/04/2012 21:07, Trass3r wrote:
Am 15.04.2012, 21:20 Uhr, schrieb sclytrack <sclytr...@hotmail.com>:
this( const size_t step) const
{
this.step = step;
}
Error: cannot modify const/immutable/inout expression this.step
Is this the expected behavior? Thanks.
Yep.
No it's not:
import std.stdio;
struct foo {
size_t _a;
this(const size_t b) const {
this._a = b;
}
}
class bar {
size_t _a;
this(const size_t b) const {
this._a = b;
}
}
void main() {
const a = new foo(42);
const b = new bar(42);
writefln("a._a: %d\n", a._a);
writefln("b._a: %d\n", b._a);
}
works as expected. dmd v2.058
Thanks. That was helpful (no irony). Compiler message was a bit fuzzy.
this() const
// Here the const modifies the return type
// While in normal methods it shouldn't.
These "constness baking" seems only to be allowed in constructors.