> -- Peter Almazov писал(а):
> Я немного не об этом. Вы пишете на входе ASSERT(len >= 0, 20). А в  можно, выходит, передавать любой бред. Кстати, не пойму, зачем там передавать что-то отличное от нуля.

Тут тонкая практическая грань уже идёт. Если предусловие на невыход позиции за границы, то оно и так неявно будет проверено при попытке выхода, для функций, которые "узкое место", проверять смысла нет явно.
Неверный же len спровоцирует "странности".

Зачем передавать - функция может ставиться на интенсивной потоковой обработке, там разные ситуации бывают.