On Thursday, 10 April 2014 at 19:28:16 UTC, Jacob Carlborg wrote:
On 2014-04-10 17:21, Remo wrote:
Please do not forget about C++ porting problems that are
related to this.
The code from C++ should compile and work as expected or does
not
compile at all and give meaningful error message.
Right now it compiles but does not work at all.
This struct constructor problem is one of the ground why I
have stopped
porting code to D.
I hope there will be proper solution soon.
How said anything about that? It has been said that one should
be able to paste C code in a D file and have it compile with
the same resulting semantics as in C or not compile at all. But
never for C++.
Well, it's true that the idea is that you can copy paste C code
into D and it "just works", keeping the same semantics (provided
minor/trivial tweaks).
And nobody ever sold you could do the same thing with C++.
*BUT*, if you happen to copy paste C++ code, and it *does*
compile, then it is pretty much expected to keep the same
resulting semantics, yes.
The "this(Arg arg = someDefault)" is a flagrant example of
something that should be rejected. Not only because it's stupid
to write in plain D, but also because it creates gratuitous
deviation from the behavior you'd get in C++. And that's actually
very bad (IMO).