On Saturday, 2 August 2014 at 15:46:31 UTC, Xinok wrote:
On Saturday, 2 August 2014 at 14:49:49 UTC, bearophile wrote:
Xinok:
I do wonder if we should generalize an interface for these
types of ranges.
First of all you need some use cases and usage examples.
Bye,
bearophile
The most obvious use case is generic functions that can operate
on associative ranges of any type, regardless of
implementation. There are various ways to implement and
optimize hash tables for specific use cases, so it would be
convenient not to be restricted to a single container.
As for usage examples, I don't have any because I'm not sure
what the primitives should be. I will emphasize that
"associative ranges" should be distinguishable from
random-access ranges. If they weren't, then we would have to
comb through Phobos and add checks everywhere, e.g.
(!isAssociativeRange!Range). I don't think forward ranges and
bidirectional ranges would be an issue though.
It might be a ploblem if you have an Associative Range where the
key is size_t unless Associative ranges are not Input/Forward
Ranges