digitalmars.D.learn - Return const object through mutable Object
- Jacob Carlborg (20/20) Apr 15 2012 class Foo
- Jonathan M Davis (6/31) Apr 15 2012 It definitely looks like a bug. Whether it returns Foo or Object should ...
- Jacob Carlborg (5/10) Apr 15 2012 This is what I expected. I've reported a bug:
class Foo { Foo f; Foo bar () const { return f; } } The above code results in the compile error: Error: cannot implicitly convert expression (this.f) of type const(Foo) to test.Foo But if I change "bar" to: Object bar () const { return f; } I don't get any errors. Is the last example supposed to compile? I'm using DMD v2.059. -- /Jacob Carlborg
Apr 15 2012
On Sunday, April 15, 2012 17:57:27 Jacob Carlborg wrote:class Foo { Foo f; Foo bar () const { return f; } } The above code results in the compile error: Error: cannot implicitly convert expression (this.f) of type const(Foo) to test.Foo But if I change "bar" to: Object bar () const { return f; } I don't get any errors. Is the last example supposed to compile? I'm using DMD v2.059.It definitely looks like a bug. Whether it returns Foo or Object should have no effect on constness, and since f is a member variable of Foo, and the this pointer/reference is const, bar is going to have to return a const reference to it, which the second version isn't doing. - Jonathan M Davis
Apr 15 2012
On 2012-04-16 02:33, Jonathan M Davis wrote:It definitely looks like a bug. Whether it returns Foo or Object should have no effect on constness, and since f is a member variable of Foo, and the this pointer/reference is const, bar is going to have to return a const reference to it, which the second version isn't doing. - Jonathan M DavisThis is what I expected. I've reported a bug: http://d.puremagic.com/issues/show_bug.cgi?id=7920 -- /Jacob Carlborg
Apr 15 2012