Re[52]: Когда это наконец станет defined behavior?
От: vdimas Россия  
Дата: 18.08.23 08:36
Оценка:
Здравствуйте, ·, Вы писали:

TB>> ·>Не понял, ты же в мапу ключ кладёшь снаружи. Или мапа копию делает?

TB>> Копию, конечно.
·>А если указатель?

Тогда ключом является адрес. ))


TB>> ·>Скажем, ключом в мапе может быть массив из миллиона элементов... Дальше продолжать?

TB>> Мув-копию.
·>А если массив является ключом в двух разных мапах?

Встроенный массив не имеет операции сравнения, поэтому не может быть ключом.
Речь может идти о некоем типе-обертке над массивом, в котором ты уже сам разбираешь с принципом владения — static-immutable, unique или shared.


·>К сожалению нет. Класс ключа может меняться, добавляться новые поля, например.


Ты намекаешь на отсутствие автоматического распространения константности по указателям и ссылкам?
Есть такое, так же как есть простая возможность распростанять константность и по указателям/ссылкам.
template<typename T>
class Pointer {
    T * ptr_;

public:
    Pointer(T * ptr = nullptr) : ptr_(ptr) {}

    T * operator->() { return ptr_; }

    const T * operator->() const { return ptr_; }
};


TB>> а вот итерация по мапе делается регулярно и там проследить за кривыми руками кодера сложнее.

·>Короче, может и есть какие-то средства, работающие в каких-то сценариях, никакой гарантии нет.

Гарантии создаёт программист согласно требуемой семантике, разумеется.
Разумеется, и в джаве и в плюсах можно обеспечить все требуемые гарантии.

Здесь сравнивается цена телодвижений в различных сценариях. ))
Абсолютно все подходы джавы по обеспечению гарантий иммутабельности или константности в плюсах есть, что уже не может дать джаве никакого преимущества в этом вопросе. ))
Но сверху этого в плюсах есть в разы более выразительные механизмы, позволяющие не писать лишний код (не засорять им бинарник).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.