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