Re[10]: auto и proxy-объекты
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 13.11.25 18:54
Оценка:
Здравствуйте, so5team, Вы писали:

S>>>Значит и вы, и ваши пользователи должны страдать, ибо нарушается принцип наименьшего удивления.


M>>И в чем же нарушение?


S>В том, что после того, как вы нашли объект в контейнере и делаете что-то с этим самым объектом (не с контейнером, и не с ключом объекта), то у вас меняется видимое пользователю содержимое объекта.


S>Т.е. вполне можно понять, когда сам по себе operator[] для map может изменить порядок следования (скажем, если operator[] обновляет "метку времени" последнего обращения к объекту). Но когда это делает не operator[], а последующие действия с самим объектом, то это из категории "внезапно".


Ну, вообще-то я как раз хочу сделать так, чтобы это было невозможно, если ты не заметил


S>Кроме того, как я понимаю, у вас вот такая ситуация:

S>
S>struct A {
S>  int _a;
S>  long _b;
S>};

S>Marty::TrickyMap<int, A> map;
S>...
S>map[ 0 ] = A{ ._a = 3, ._b = 4 };
S>

S>будет менять порядок следования элементов, т.к. вы видите полную замену содержимого. Но вот так:
S>
S>map[ 0 ]->_a = 3;
S>map[ 0 ]->_b = 4;
S>

S>порядок следования уже не поменяется. Хотя объект полностью изменит свое содержимое.

Не понял, а как/за счёт чего это будет работать?


M>>Да, это выглядит интересно. А как такая конструкция называется, и в каких разделах описана?


S>https://en.cppreference.com/w/cpp/language/member_functions.html -- в разделе Member functions with ref-qualifier


Спасибо
Маньяк Робокряк колесит по городу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.