From: Peter Dimov (pdimov_at_[hidden])
Date: 2006-09-29 12:10:19
David Abrahams wrote:
> Joel de Guzman <joel_at_[hidden]> writes:
>> Here's another problem:
>> std::map<int*, int*> m;
>> generic code that treats pair<int* int*> as an iterator_range
>> will treat m's data type incorrectly.
> No, generic code doesn't look at types and say, "which of two concepts
> with no refinement relationship does this type fulfill?" and then take
> different actions based on the answer.
Sometimes it does. Consider serialization, or stream output. You could have
if( type is a range )
output sequence of values
output something else
Treating pair<pointer, pointer> as a range creates an ambiguity here.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk