13-Sep-2014 05:43, Manu via Digitalmars-d пишет:
On 13 September 2014 03:14, monarch_dodra via Digitalmars-d
<[email protected] <mailto:[email protected]>> wrote:
On Friday, 12 September 2014 at 16:48:28 UTC, Dmitry Olshansky wrote:
08-Sep-2014 16:46, Manu via Digitalmars-d пишет:
Please can we move on a solution to this problem?
It's driving me insane. I can't take any more of this! >_<
Walter invented a solution that was very popular at
dconf2013. I don't
recall any problems emerging in post-NG-discussions.
Ideally, we would move forward on a design for 'scope', like the
promising (imo) proposal that appeared recently. That would
solve this
problem, and also many other existing safety problems, and even
influence solutions relating to other critical
GC/performance problems.
IMO just legalese auto ref for normal functions and you are all set.
The semantics end up to be pretty much the same as c++ const &
does (not duplicating the function, like current template-style
auto ref).
Yeah, the whole function duplication thing is pretty bad. Auto ref
should just create a wrapper that forwards, and the implementation
always operate on references.
With this approach in mind, auto ref for functions should be
trivial, in thé sense that the function is compiled normally as a
non template that takes refs, and the compiler only generates
code/templates to capture r values.
Why the hack? Why not just take a local for the rvalue in the scope that
it appears?
Generating proxy functions and stuff just makes problems, like taking
function pointers of functions, and messes with the debuginfo in very
annoying ways.
Please stop bringing this silly argument.
It's an implementation detail, debug-info can be outputted as required
obviously. For instance scope(exit) is also lowered to try/finally, yet
you still should be able step through the right lines with debugger
correctly no problem at all.
Quality debuginfo is super-important, but D gives it very
little attention; we need to move forward on that front, not backwards.
auto-ref is a disaster, please don't make it more pervasive.
It was just poorly implemented and only for templates. I don't see how
having a different name would help us reach the same effect.
--
Dmitry Olshansky