Конкретный вариант использования to_address

Так что, очевидно, С++ 20 получает std::to_address.

Со страницы cppreference его вариант использования не кажется мне понятным. У нас уже есть operator& и std::addressof Зачем нам нужна еще одна функция, которая дает нам адрес для своего аргумента?

Ответ 1

std::addressof берет объект и получает его адрес, даже если унарный "addressof operator" (aka &) был перегружен.

std::to_address принимает указатель, умный или тупой, и возвращает указатель.

По сути, при написании библиотеки std, в этом случае, распределители, разработчики находят, что им нужна эта служебная функция. Он небольшой, простой и должен быть написан всякий раз, когда кто-то хочет работать с распределителями. Таким образом, они написали легкое предложение, чтобы добавить это.

Здесь есть несколько ловушек; вы не можете сделать std::addressof(*ptr) потому что *ptr еще не всегда является объектом. Уже есть черта, которая решает эту проблему, но написание кода с использованием черт напрямую раздражает.


Почему это, когда они не закончили вашу любимую функцию? Нравится сеть?

Для сравнения, сетевое взаимодействие не является легким предложением. И текущий дизайн зависит от исполнителей (в основном абстракции концепции потоковых пулов). Цель написания высокоуровневой библиотеки, которая предлагает производительность C/ASM, созданную вручную, делает написание сетей сложнее, чем функция с двумя строками.

Затем кто-то жалуется, что ему требуется 15 минут, чтобы утвердить полезную функцию, потому что эпическое предложение для программистов на год еще не пришло. Несправедливость

Или что-то типа того.