The order of the range returned is the same as the one received.
Not true. It should default to the genuine bidirectional range's direction. If it was reversed before calling rfind we could: let the user reverse the result again or add the possibility to query the range to know it it's already been reversed (compared to original ordering):

@property bool reversed() {}

In fact, this is to be known anyways if the range has to keep internal data to know in which direction it has to move. Meaning, reverse should be implemented like that:

VOID reverse() {
 _reversed = true;
}

instead of

ReversedBidirectionalRange reverse() {
  return blablabla...
}

There truly are multiple ways to implement a solution to this problem. We could also have merge decide the direction of the range based on the "end" range (since we are moving towards this one).


Reply via email to