<div dir="ltr">On 23 May 2013 19:05, Don <span dir="ltr"><<a href="mailto:turnyourkidsintocash@nospam.com" target="_blank">turnyourkidsintocash@nospam.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="im">On Tuesday, 21 May 2013 at 20:36:20 UTC, Walter Bright wrote:<br>

</div><div><div class="h5"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
Join the dmd beta mailing list to keep up with the betas. This one is pretty much good to go, unless something disastrous crops up.<br>
<br>
<a href="http://ftp.digitalmars.com/dmd2beta.zip" target="_blank">http://ftp.digitalmars.com/<u></u>dmd2beta.zip</a><br>
<br>
Remaining regressions:<br>
<br>
<a href="http://d.puremagic.com/issues/buglist.cgi?query_format=advanced&bug_severity=regression&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED" target="_blank">http://d.puremagic.com/issues/<u></u>buglist.cgi?query_format=<u></u>advanced&bug_severity=<u></u>regression&bug_status=NEW&bug_<u></u>status=ASSIGNED&bug_status=<u></u>REOPENED</a><br>

</blockquote>
<br></div></div>
NO NO NO NO. I am violently opposed to this release.<br>
<br>
This beta contains the worst language misfeature of all time. It's silently snuck in under the guise of a bugfix.<br></blockquote><div><br></div><div class="gmail_extra">Side note, it's so funny how I can clearly hear everybody's voice and inflections when reading the NG now!</div>
<div class="gmail_extra" style>This post in particular :)</div><div class="gmail_extra" style><div class="gmail_extra"><br></div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

struct S<br>
{<br>
    const int x = 7;<br>
    int y;<br>
}<br>
<br>
In previous releases, S.x was always 7.<br>
But now, if you write<br>
<br>
S s = S(5);<br>
<br>
then x gets changed to 5.<br>
This means that the const variable x has been initialized TWICE!<br>
<br>
This new behaviour is counter-intuitive and introduces a horrible inconsistency.<br>
<br>
This is totally different to what happens with module constructors (you get a compile error if you try to set a const global if it already has an initializer). Likewise, everywhere else in the language, when you see a const variable with an initializer, the initializer gives its value.<br>

<br>
<br>
I think the only possible solution is to make it an error to provide a const or immutable member with an initializer.<br>
<br>
If you are providing an initializer, you surely meant to make it 'static const', and that is certainly true of all existing usages of it.<br>
<br>
As far as I can tell, this new feature exists only to create bugs. No use cases for it have been given. I cannot imagine a case where using this feature would not be a bug.<br>
<br>
<br>
Please do not release this beta.<br>
</blockquote></div></div><div class="gmail_extra" style><br></div></div>