
22 Nov
2008
22 Nov
'08
6:15 p.m.
My guess is that they're Thorsten's attempt to avoid silent breakage. Whether or not the attempt was well-executed is another matter, but I can understand why he might have done it: he realized that the original design was wrong, and rather than silently letting people get away with using it in ways that were to become illegal, he detected the newly-illegal usage in the only way possible, at runtime.
A better way to fix it though, is to introduce another class, instead of breaking an existing one. At this point I don't care what they're called - I think they should be both in boost, even though I think the best way to proceed would be to keep iterator_range as it was before and add a base class which has the new semantics.