
Thorsten Ottosen wrote:
"Peter Dimov" <pdimov@mmltd.net> wrote in message news:00f601c43438$67a5ab60$1d00a8c0@pdimov2...
Thorsten Ottosen wrote:
"Peter Dimov" <pdimov@mmltd.net> wrote in message news:003b01c4337c$83b49df0$1d00a8c0@pdimov2...
Thorsten Ottosen wrote: [snip]
Range is begin(), end();
So you want size() and empty() to be removed from the Range Traits?
I just omitted them for brevity, but since you ask, size() is essential since it can be O(1) when distance( begin(), end() ) is O(N), but it seems to me that empty() is always begin() == end(), so it can be removed. (begin() and end() should be O(1).)
hm...empty() is O(N) for strings if implemented as end() - begin(), but O(1) currently.
Yes, you are right, I missed that. This however reminds me about a related issue. If I read the implementation correctly, the size of T[N] is usually N, but it's N-1 when T is char or wchar_t. I understand that this is being done to support "character literals", but it obviously has the potential to introduce subtle off by one bugs, especially in generic code.