
29 Sep
2006
29 Sep
'06
4:10 p.m.
David Abrahams wrote:
Joel de Guzman <joel@boost-consulting.com> 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 else output something else Treating pair<pointer, pointer> as a range creates an ambiguity here.