opApply Vs. Ranges: What should take precedence?

Bill Baxter wbaxter at gmail.com
Fri Nov 20 16:32:10 PST 2009


On Fri, Nov 20, 2009 at 4:22 PM, Justin Johansson <no at spam.com> wrote:
> Bill Baxter wrote:
>>
>> On Fri, Nov 20, 2009 at 3:36 PM, Walter Bright
>> <newshound1 at digitalmars.com> wrote:
>>>
>>> And here I was thinking perhaps opApply should just be dumped in favor of
>>> ranges.
>>>
>>
>> I think the opApply should take precedence.
>> The only reason to define opApply is because foreach uses it.
>> Ranges on the other hand are useful in other situations.
>>
>> --bb
>
> Is is absolutely necessary for opApply to take a ref parameter?  (I'm asking
> from D1 familiarity not D2 so question might not be relevant).
>
> My understanding is that by taking a ref parameter there is an additional
> pointer dereference to get to the actual datum that is the subject of
> current application.  Of course the current regime does appear to allow a
> foreach to modify the items in the "container" being iterated over, though
> myself, I've only ever used foreach in readonly mode.

Making the delegate's arg "const ref" seems to work in D2.
And prevents writing to the argument, as expected.

--bb



More information about the Digitalmars-d mailing list