
Den 03-11-2011 10:13, Jeffrey Lee Hellrung, Jr. skrev:
On Thu, Nov 3, 2011 at 1:54 AM, Thorsten Ottosen< thorsten.ottosen@dezide.com> wrote:
Well, its /not/ unlikely that it will break code.
Well, okay, sure, *some* code is going to break. Do you have actual code (i.e., not contrived examples) that you predict would fail?
Its not contrieved at all. Did you not read the rest of my answer? Even changing it to unsigned won't remove all compile errors that motivated a change.
Given that this has come up twice in the last month, I think it's worth discussing the fallout from such a change. If one were to redesign boost::iterator_range all over again, is there an argument *against* making size() return an unsigned type?
Well, it used to return an unsigned type. It was then changed because iterator traits have no notion of unsigned types. And , AFAICR, there was a discussion about this on the list, convincing me that using difference_type was the right thing to do. It also makes it easier to write an assertion, if someone constructed an iterator range incorrectly. -Thorsten