Здравствуйте, Marty, Вы писали:
S>>Логика мне непонятна (как и многое из того, что вы здесь показываете).
M>Я заметил
А могли бы и задуматься почему ваши гениальные замыслы не находят понимания.
S>>Тогда у вас не получится заменить значение по уже имеющемуся ключу. Для такой замены нужно будет использовать другой метод. Внутри которого вы сможете делать что вам захочется (хоть обновлять, хоть перемещать в конец). И никакие прокси вам не потребуются.
M>Контейнер мой, но передаётся в чужой код, который кладёт значения в map через operator[]
Значит и вы, и ваши пользователи должны страдать, ибо нарушается принцип наименьшего удивления.
Если хочется извращений, то попробуйте поэкспериментировать с методами вашего прокси, которые будут разрешены только для случая rvalue reference.
Что-то типа:
class proxy {
public:
void f() &&;
...
};
Тогда метод f() можно будет вызвать у объекта proxy только если это временный объект.
А вот если кто-то его сохранил на стеке и пытается вызвать f по обычной или конст-ссылке, то компилятор ударит по рукам:
https://wandbox.org/permlink/s5hlLuSfHKbEIg0g