кейсы
пофиг. вы прочли data, другой тред что-то добавил и произошла реаллокация, вы полезли в память уже не принадлежащую вектору
Речь шла о том, что всё ридонли
Operator [] не читает data
да, он магическим образом узнает где данные? :)
Все ридонили и ваша конкретная операция ридонли это две большие разницы
Речь о том, что есть базовая гарантия, которую считает дефолтной - конст методы не модифицируют ничего. Следовательно - если операции все р/о, то можно шарить объект. Наличие мутабл полей и соответственно каких-то методов, которые нарушают этот инвариант может быть ОЧЕНЬ неприятным
Давным давно я расказывал, почему даже с mutable полями const методы должны быть потокобезопасными
Даже если конст метод ничего не модифицирует, это совершенно не гарантирует от того, что соседний тред может вызвать не конст метод и все с грохотом рухнет.
Зато должно гарантировать что если всё потоки вызывают конст методы объекта, то всё безопасно
попробуйте найти такую гарантию в стандарте
Попробуйте опровергнуть(ну или найти исключение) наличие такого во всём стандарте включая стд
Обсуждают сегодня