<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On 13 September 2014 18:02, Dmitry Olshansky via Digitalmars-d <span dir="ltr"><<a href="mailto:digitalmars-d@puremagic.com" target="_blank">digitalmars-d@puremagic.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">13-Sep-2014 05:43, Manu via Digitalmars-d пишет:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span>
On 13 September 2014 03:14, monarch_dodra via Digitalmars-d<br></span><div><div>
<<a href="mailto:digitalmars-d@puremagic.com" target="_blank">digitalmars-d@puremagic.com</a> <mailto:<a href="mailto:digitalmars-d@puremagic.com" target="_blank">digitalmars-d@<u></u>puremagic.com</a>>> wrote:<br>
<br>
    On Friday, 12 September 2014 at 16:48:28 UTC, Dmitry Olshansky wrote:<br>
<br>
        08-Sep-2014 16:46, Manu via Digitalmars-d пишет:<br>
<br>
            Please can we move on a solution to this problem?<br>
            It's driving me insane. I can't take any more of this! >_<<br>
<br>
            Walter invented a solution that was very popular at<br>
            dconf2013. I don't<br>
            recall any problems emerging in post-NG-discussions.<br>
<br>
            Ideally, we would move forward on a design for 'scope', like the<br>
            promising (imo) proposal that appeared recently. That would<br>
            solve this<br>
            problem, and also many other existing safety problems, and even<br>
            influence solutions relating to other critical<br>
            GC/performance problems.<br>
<br>
<br>
<br>
        IMO just legalese auto ref for normal functions and you are all set.<br>
        The semantics end up to be pretty much the same as c++ const &<br>
        does (not duplicating the function, like current template-style<br>
        auto ref).<br>
<br>
<br>
    Yeah, the whole function duplication thing is pretty bad. Auto ref<br>
    should just create a wrapper that forwards, and the implementation<br>
    always operate on references.<br>
<br>
    With this approach in mind, auto ref for functions should be<br>
    trivial, in thé sense that the function is compiled normally as a<br>
    non template that takes refs, and the compiler only generates<br>
    code/templates to capture r values.<br>
<br>
<br></div></div><span>
Why the hack? Why not just take a local for the rvalue in the scope that<br>
it appears?<br>
Generating proxy functions and stuff just makes problems, like taking<br>
function pointers of functions, and messes with the debuginfo in very<br>
annoying ways.<br>
</span></blockquote>
<br>
Please stop bringing this silly argument.<br>
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.</blockquote><div><br></div><div>It frustrates me that people can say this is a silly or trivial argument when myself and everyone I know who I've introduced to D consider it the single biggest sign of language immaturity that still remains. I'm confident the weak debug experience has a strong inhibiting influence on D adoption.</div><div>The debug experience feels... amateur, at best. It frustrates me on a daily, perhaps hourly basis. I tolerate it because I have hope for D, but I'm in the minority among my industry peer group.</div><div>I still can't inspect the contents of a class, static/globals, inspect the values of locals repeated in separate scopes, or step through the code in the expected sequential fashion without the cursor jumping around somewhat randomly.<br></div><div>I don't know another language that's expected to be taken seriously with such a careless attitude taken towards debugging, and I wonder if your comment may be indicative of the problem.</div><div>It's not an implementation detail. If a features design is incompatible with a quality debugging experience, it should be considered just as much a real problem as any other detail, and it definitely needs to be considered more seriously than it generally has in the past.</div><div><br></div><div>Implicit wrapper functions sound like a debug nuisance, they create an additional step-in/step-out sequence, and if they begin appearing on random functions while quickly stepping through code, I can imagine many accidental mis-steps.</div><div><br></div><div>But regardless of that, you skipped my first and primary point, that it's also semantically complicated (what do you get when you take a function pointer?). It's just a hack to do what could easily be done directly; produce an implicit temp at the callsite.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Quality debuginfo is super-important, but D gives it very<br>
little attention; we need to move forward on that front, not backwards.<br>
<br>
auto-ref is a disaster, please don't make it more pervasive.<br>
</blockquote>
<br></span>
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.</blockquote><div><br></div><div>It's explicitly a template concept. 'auto' is in the same sense also a template concept.</div><div>I'm not suggesting auto ref by a different name, I'm just suggesting to just make rvalue temporaries work like people expect, which also seems much simpler semantically, and I imagine probably in terms of implementation too?</div></div></div></div>