On Wed, 26 Mar 2014 16:38:57 -0000, monarch_dodra <[email protected]> wrote:

On Wednesday, 26 March 2014 at 15:37:38 UTC, Steven Schveighoffer wrote:
Yes, but when you know that empty is going to return false, there isn't any logical reason to call it. It is an awkward requirement.

-Steve

Not only that, but it's also a performance criteria: If you are iterating on two ranges at once (think "copy"), then you *know* "range2" is longer than "range1", even if you don't know its length.

What guarantees range2 is longer than range1? The isArray case checks explicitly, but the generic one doesn't. Is it a property of being an output range that it will expand as required, or..

Why pay for "range2.empty", when you know it'll always be false? There is a noticeable performance difference if you *don't* check.

But aren't you instead paying for 2 checks in front and 2 in popFront, so 4 checks vs 1? Or is the argument that these 4 checks cannot be removed even if we mandate r.empty is called before r.front/popFront.

R

--
Using Opera's revolutionary email client: http://www.opera.com/mail/

Reply via email to