Bug 9240 – (Regression: 2.058) non-const does not implicitly convert to const

Status
RESOLVED
Resolution
INVALID
Severity
regression
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2012-12-29T08:48:00Z
Last change time
2013-01-14T07:43:19Z
Assigned to
nobody
Creator
andrej.mitrovich

Comments

Comment #0 by andrej.mitrovich — 2012-12-29T08:48:00Z
void ok(const(int*)*) { } void ng(const(int)**) { } void main() { int** x; ok(x); ng(x); } 'ng' call fails to compile since 2.058
Comment #1 by andrej.mitrovich — 2013-01-12T19:32:48Z
Introduced by: commit d3cd1bf6db3689fb16c8f97572ae8bbf92ec9df7 Author: k-hara <[email protected]> Date: Tue Dec 13 15:03:44 2011 +0900 Issue 4251 - Hole in the const system: immutable(T)[] implicitly casts to ref const(T)[]
Comment #2 by yebblies — 2013-01-14T03:33:33Z
This is not a bug. See the examples in issue 4251 for how allowing this would break const.
Comment #3 by andrej.mitrovich — 2013-01-14T07:43:19Z
(In reply to comment #2) > This is not a bug. See the examples in issue 4251 for how allowing this would > break const. Exact comment which explains this: http://d.puremagic.com/issues/show_bug.cgi?id=4251#c9 I think this could go to the spec as a small note. It was brought up on IRC by someone converting some C++ code to D, and at first sight it seemed like a rejects-valid. A few of us agreed and I filed it, but comment #9 above explains the problem perfectly.