rvalues->ref args
Manu via Digitalmars-d
digitalmars-d at puremagic.com
Sun Sep 14 00:41:14 PDT 2014
On 13 September 2014 18:02, Dmitry Olshansky via Digitalmars-d <
digitalmars-d at puremagic.com> wrote:
> 13-Sep-2014 05:43, Manu via Digitalmars-d пишет:
>
>> On 13 September 2014 03:14, monarch_dodra via Digitalmars-d
>> <digitalmars-d at puremagic.com <mailto:digitalmars-d at puremagic.com>> 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.
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.
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.
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.
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.
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.
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.
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.
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.
It's explicitly a template concept. 'auto' is in the same sense also a
template concept.
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?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20140914/eb886859/attachment-0001.html>
More information about the Digitalmars-d
mailing list