Thread overview
toString why not const
Jan 21, 2011
Tom
Jan 21, 2011
Jesse Phillips
Jan 21, 2011
bearophile
Jan 21, 2011
Jonathan M Davis
January 21, 2011
Hi, I'm trying to override Object's toString. I've noted it isn't a const method, namely:

string toString() const;

This cause me troubles when using it on a const reference.

Shouldn't it be const?

Thanks,
Tom;
January 21, 2011
Tom Wrote:

> Hi, I'm trying to override Object's toString. I've noted it isn't a const method, namely:
> 
> string toString() const;
> 
> This cause me troubles when using it on a const reference.
> 
> Shouldn't it be const?
> 
> Thanks,
> Tom;

Phobos hasn't become very const aware. There have been bugs and things preventing such an effort. So I do believe it should be const, but between the other priorities, and possible signature change for toString, it isn't done yet.
January 21, 2011
On Friday, January 21, 2011 13:02:56 Tom wrote:
> Hi, I'm trying to override Object's toString. I've noted it isn't a const method, namely:
> 
> string toString() const;
> 
> This cause me troubles when using it on a const reference.
> 
> Shouldn't it be const?
> 
> Thanks,
> Tom;

It's a long-standing bug: http://d.puremagic.com/issues/show_bug.cgi?id=1824

In theory, the issues with const in the compiler and in Phobos will be focused on and sorted out not too long after the 64-bit port of dmd has been finished, but regardless, it's still an outstanding issue and definitely annoying.

Also, be warned that (due to another bug) you _can't_  declare a struct's toString to be const (it must be _exactly_ string toString() { ... }). You _can_, however, override toString() to be const on classes, though how much good it really does you, I'm not sure. Hopefully all that stuff will be sorted out semi-soon.

- Jonathan M Davis
January 21, 2011
Jesse Phillips:

> So I do believe it should be const, but between the other priorities, and possible signature change for toString, it isn't done yet.

There also the idea of introducing the writeTo() standard method, that's neat :-)

Bye,
bearophile