In a way I wish my not being polite would be the main
bottleneck for this. I've been extremely busy at work, then
preparing for DConf 2013, and last week has been quite
distracting what with the Boston bombings three miles away from
where we live and all that. It strikes me as odd to be
obligated to spend time on something just because someone else
did, and framed as impolite if I don't.
That being said, I have made a pass through this DIP and I have
the following concerns about it.
1. It defines a new language feature instead of improving the
existing ones. At this point in the development of the
language, our preference should be putting the existing
features in good order.
2. The proposal is sketchy and does not give many details, such
as the lifetime of temporaries bound to scope ref objects.
3. The relationship with auto ref is insufficiently described,
e.g. there should be clarification on why auto ref cannot be
improved to fulfill the desired role.
4. Above all this is a new language feature and again we want
to resort to adding new feature only if it is clear that the
existing features are insufficient and cannot be made
sufficient. In particular we are much more inclined to impart
real, demonstrable safety to "ref" and to make "auto ref" work
as a reference that can bind to rvalues as well as lvalues.
Andrei
I'm sorry that you take it so personally, but I know from
experience that some topics often get forgotten or ignored if you
don't ask about it more then once.
And that we have made so much effort should show that we work for
D and not against it and that we don't want to annoy you.
But you are right, scope ref is in comparison to auto ref a new
feature, but it is one with little sideeffects and minimized
implementation effort.
And Jonathan described here
(http://forum.dlang.org/thread/uswucstsooghescof...@forum.dlang.org?page=2#post-mailman.293.1364249651.4724.digitalmars-d-learn:40puremagic.com)
very well and in detail why auto ref is no solution for
non-templates.
In short:
It cannot work the same way for non-templates as it does for
template functions, because that would mean that non-templates
are also doubled 2^n times.
And the way scope ref would work, would mean, that auto ref works
different for templates and non-template functions.
But you'd better read Jonathan's answer.