Информация об изменениях

Сообщение Re: Что мешает не вычислять size() каждую итерацию цикла? от 30.04.2021 13:32

Изменено 30.04.2021 13:34 rg45

Re: Что мешает не вычислять size() каждую итерацию цикла?
Здравствуйте, Zhendos, Вы писали:

Z>почему компилятор считает что "MyVec<MyVec<int>>" может из-за этого поменяться?


Потому, что константность ссылки, по которой вектор передается в foo, не гарантирует его неизменяемости. Да, взлом константности не есть хорошо с точки зрения дизайна, но программа-то остается well-formed, тем не менее. А значит, компилер обязан корректно обработать и этот случай.

Да м сколько там тех вычислений. Два mov-а и один sub. Неужто чувствительно?
Re: Что мешает не вычислять size() каждую итерацию цикла?
Здравствуйте, Zhendos, Вы писали:

Z>почему компилятор считает что "MyVec<MyVec<int>>" может из-за этого поменяться?


Потому, что константность ссылки, по которой вектор передается в foo, не гарантирует его неизменяемости. Да, взлом константности не есть хорошо с точки зрения дизайна, но программа-то остается well-formed, тем не менее. А значит, компилер обязан корректно обработать и этот случай.

Да и сколько там тех вычислений. Два mov-а и один sub. Неужто чувствительно?