Насчет выхода за границы массива - на проверку этого все равно затратятся ресурсы, так? Раньше в С++ нельзя было переопределить операции так, чтобы операция взятия индекса [] от просто индекса и от "умного индекса с проверками" были синтаксически одинаковы. Там куча тонкостей вылазила. Сейчас это решили?