const(X) member of Y
Dan
dbdavidson at yahoo.com
Wed Feb 6 14:54:39 PST 2013
On Wednesday, 6 February 2013 at 22:29:49 UTC, Maxim Fomin wrote:
> Yes, because this(const this) is not a copy constructor or a
> postblit, it is a simple constructor. X(x) will print "Hi".
> This is unintuitive, but parameter names can be omitted and
> this leads to confusion between struct postblit and struct
> constructor which has first argument of its own type.
Thanks, I did not know that. I think I see it, now:
auto x3 = X(x);
auto x4 = x;
The first prints "Hi", the second not. So it is not a "copy
constructor", but rather a "simple constructor" that would allow
for performing a copy. I assume the syntax "auto x3 = X(x)" is
the only way this would be called, and by-value parameter passing
would never invoke 'this(const this)'.
This begs the question:
Which of these do you choose and for what reasons:
- this(this){}
- this(this)const{}
- this(const this){}
Also, has any of this detailed information made it into the
language spec?
Thanks
Dan
More information about the Digitalmars-d
mailing list