Я использую слабые указатели в качестве ключей на карте. Однако, когда я попытался скомпилировать, я получил уродливые сообщения, которые я интерпретировал как означающие, что мне не хватает оператора сравнения для std::weak_ptr, который, очевидно, требуется в std::map, так как он упорядочивает свои элементы в соответствии с ключевое значение.
Однако теперь класс weak_ptr является классом типа интеллектуального указателя и, как таковой, работает с указателями на некоторые управляемые данные.
Есть ли веская причина, по которой этот класс НЕ предоставляет базовую реализацию метода оператора? Я имею в виду, что сравнение значений указателя кажется мне довольно очевидным, и, если требуется, чтобы он работал по-другому, тогда нужно иметь возможность расширить или переопределить метод, чтобы вместо этого получить ожидаемое поведение. т это?
Ваше понимание будет высоко оценено здесь. Спасибо в ожидании.
<
закончит сравнение указателей, один из базовых объектов может быть уничтожен, так что результаты ваших сравнений. Это не имеет ничего общего со сравнением указателей в целом, как утверждают ответы.std::less
обеспечивает обязательный слабый порядок указателей. Поищи это. Нет ничего плохого в сравнении обычных указателей. Но сравнение слабых указателей по своей природе совершенно бессмысленно. - person Sam Varshavchik   schedule 09.04.2018