On Mon, 27 Apr 2009 08:51:03 -0400, Daniel Keep
<[email protected]> wrote:
Steven Schveighoffer wrote:
...
There are three benefits I see to the proposal:
1. It saves typing. This is not usually a big deal, except that this
sort of constructor is EXTREMELY common with container objects.
Fair enough.
2. It saves having to specify the type. We get the same savings from
"auto," it should be similar here. In fact, you could probably change
the keyword "member" to "auto".
True, but...
3. It's a little more self documenting. You know when you see the
function signature, that what you pass in will at least start being the
initial value of the named member.
class Act
{
this(auto a, auto b) {}
// a million billion lines of code
private { int a; Wombat b; }
// another million billion lines of code. And a pony.
}
Working out the type of a or b will be a major pain in the arse.
Just like:
void foo()
{
int a, b;
// a million billion lines of code
auto c = a; // what type is a?
}
If you used auto as the keyword, you don't add a keyword.
I'd vote for it. Of course, I'd rather have inherited constructors
first ;)
-Steve
For me, the real nail-in-the-coffin is that you can do this with mixins.
Yes, grauzone, they're not pretty. But they work and they don't
require language changes.
Yes, the mixin Nick provided is handy. I guess you are right.
-Steve