Из моего понимания они будут удалены и все тут.Я нашел предложение здесь .
Относится к first_argument_type
и second_argument_type
:
Приспосабливаемые привязки функций были сильным кандидатом на удаление в C ++ 17, но были сохранены только потому, что не было адекватныхзамена для пользователей унарных / бинарных отрицателей для миграции.Эта функция, std :: not_fn, была добавлена в C ++ 17 для разрешения пути миграции,
Проверка std :: not_fn для c ++ 17 я обнаружил, что:
Обратите внимание, что протокол адаптируемой функции больше не функционирует так же, как и при первоначальном проектировании, благодаря добавлению новых языковых функций и библиотек, таких как лямбда-выражения, "алмазные" функторы и многое другое,Это не из-за недостатка усилий, а просто из-за того, что невозможно иметь уникальный набор typedef для некоторых из этих типов, таких как полиморфные лямбда-объекты.Однако мы платим за сохранение поддержки в других местах библиотеки из-за неудобных условно определенных членов typedefs в нескольких компонентах, таких как std :: function, обертывающих тип функции ровно одним или двумя параметрами, или аналогичным образом для std ::reference_wrapper для ссылок на функции ровно одного или двух аргументов.
Это означает, что они будут просто удалены.
Кажется, одна из проблем с first_argument_type
и second_argument_type
быть из-за polymorphic lambda objects
.
Также, как указано в комментариях, все с несколькими operator()
, которые могут быть переданы в std::variant<...>::visit
, имеют проблемыс first_argument_type