Ответ 1
std::addressof
берет объект и получает его адрес, даже если унарный "addressof operator" (aka &
) был перегружен.
std::to_address
принимает указатель, умный или тупой, и возвращает указатель.
По сути, при написании библиотеки std, в этом случае, распределители, разработчики находят, что им нужна эта служебная функция. Он небольшой, простой и должен быть написан всякий раз, когда кто-то хочет работать с распределителями. Таким образом, они написали легкое предложение, чтобы добавить это.
Здесь есть несколько ловушек; вы не можете сделать std::addressof(*ptr)
потому что *ptr
еще не всегда является объектом. Уже есть черта, которая решает эту проблему, но написание кода с использованием черт напрямую раздражает.
Почему это, когда они не закончили вашу любимую функцию? Нравится сеть?
Для сравнения, сетевое взаимодействие не является легким предложением. И текущий дизайн зависит от исполнителей (в основном абстракции концепции потоковых пулов). Цель написания высокоуровневой библиотеки, которая предлагает производительность C/ASM, созданную вручную, делает написание сетей сложнее, чем функция с двумя строками.
Затем кто-то жалуется, что ему требуется 15 минут, чтобы утвердить полезную функцию, потому что эпическое предложение для программистов на год еще не пришло. Несправедливость
Или что-то типа того.