On Wednesday, July 21, 2010 14:39:38 Peter Alexander wrote: > I also find it unintuitive to write insertBefore(Range). Why is it > asking me for a range when it's going to ignore everything but the first > element? Why can't I just pass in the single position I want to insert > before? The same applies for insertAfter.
Well, considering that any function that you'd be dealing with at this point would give you a range, it's quite natural that what you'd have to pass to insertBefore() would be a range. And really, that's all you need anyway. The first element of the range is what you'd have had an iterator for anyway, so you're really doing the same thing. It's just that you have a whole range instead of the single iterator. Granted, it does seem a little funny to have whole ranges for this, but it works just fine, and trying to mix iterators into phobos will just make it more complicated, and cause concerns for when iterators should be used vs when ranges should be used, as well as how to convert from one to the other. It may be that we need to find a way to extend the functionality of ranges such that some of the more awkward cases are less awkward, but ranges work, and they generally work very well. It just requires thinking about things a bit differently. - Jonathan M Davis