From slices to perfect imitators: opByValue

monarch_dodra via Digitalmars-d digitalmars-d at puremagic.com
Thu May 8 03:58:15 PDT 2014


On Thursday, 8 May 2014 at 03:58:16 UTC, Andrei Alexandrescu 
wrote:
> This change would allow library designers to provide good 
> solutions to making immutable and const ranges work properly - 
> the way T[] works.
>
> There are of course a bunch of details to think about and 
> figure out, and this is a large change. Please chime in with 
> thoughts. Thanks!
>
> Andrei

The only thing I'd be afraid about is calling a run-time 
*function* when you pass something by value. It seems like it 
creates a *huge* hole for abuse.

I'd be OK if "opByValue" was allowed only as an alias type. EG, 
something like:

struct S(T)
{
     alias opByValue(const) = S(const(T));
}

Which would (statically) mean that "const(S(T))" may (and should) 
be value converted to S(const(T));

This would still need a bit of work, but I think having a hidden 
function call for pass by value is a Bad Thing (tm)


More information about the Digitalmars-d mailing list