On January 24, 2016 4:10:19 PM EST, Soul Studios
I don't know anything about Colony, but violating requirements for iterators would not be a good idea. However, if you provide a non-standard means to access the iterators, you could give users the choice to gain random access while not accidentally using the non-conforming random access iterators in normal contexts. IOW, don't use begin() and end(), but some variant thereof.
I see what you mean, however not sure if providing an additional iterator type would solve the problem from the point of view of the standard - you'd still be giving std::find and the like with an iterator and by definition that iterator must be compliant - which it wouldn't be.
The difference is that the user is choosing to use the non-conforming iterators with knowledge aforethought. Yes, it can increase std::find()'s complexity, which is non-conforming, but it will work and the user will have selected it. I see it as similar to using insert(begin(), value) when push_front() isn't available. ___ Rob (Sent from my portable computation engine)