C++ guys hate static_if?

Dmitry Olshansky dmitry.olsh at gmail.com
Fri Mar 15 04:28:52 PDT 2013


15-Mar-2013 15:27, Dmitry Olshansky пишет:
> 15-Mar-2013 06:43, deadalnix пишет:
>> On Thursday, 14 March 2013 at 23:52:59 UTC, Nick Sabalausky wrote:
>>> On Thu, 14 Mar 2013 17:54:52 -0400
>>> Andrei Alexandrescu <SeeWebsiteForEmail at erdani.org> wrote:
>>>>
> [snip]
>>> That implicitly does the equivalent of ".save" on a mere InputRange
>>> *twice*. The result, of course, is completely dependent on the input
>>> range in question.
>>
>> Passing range by value is completely undefined, which is IMO a big weak
>> spot of ranges.
>
> What can be done in the mean time is stating somewhere prominent this:
>
> Given InputRanges a & b:

Forward obviously.

>
> 1. a = b; //now 'a' can only be *either* an alias of 'b' or 'a' is a
> copy of 'b'
> 2. a = move(b); //now a is the only copy (the only alias ;))
> 3. a = b.save(); //now a is guaranteed to be a shallow copy
>
> By copy here it's implied that range preserves iteration state. The
> underlying values may be changed elsewhere.
>
> There could be some argument to make 1 always do 3 and trim it to 2
> rules. But ehm, sorry, classes as ranges can't do that so we are stuck.
>
> If I had to choose I'd drop the current OOP support of D in favor of
> simplifying things (only half-joking) :)
>


-- 
Dmitry Olshansky


More information about the Digitalmars-d mailing list