X Tutup
The Wayback Machine - https://web.archive.org/web/20211006175443/https://ru.cppreference.com/w/cpp/utility/functional
Пространства имён
Варианты
Действия

Объекты функции

Материал из cppreference.com
< cpp‎ | utility
 
 
Библиотека утилит
Поддержка языка
Поддержка типа (базовые типы, RTTI, свойства типов)    
Макросы тестирования функциональности библиотеки (C++20)
Управление динамической памятью
Программные утилиты
Обработка ошибок
Поддержка сопрограмм (C++20)
Вариативные функции
(C++17)
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Дата и время
Объекты функции
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)  
(C++20)
Операции обмена и типа
(C++14)
(C++11)

(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++17)

Элементарные преобразования строк
(C++17)
(C++17)

Stacktrace
 
Объекты функции
Обёртки функций
(C++11)
(C++11)
Частичное применение функций
(C++20)
(C++11)
Вызов функции
(C++17)(C++23)
Идентификация объекта функции
(C++20)
Обёртки ссылок
(C++11)(C++11)
Прозрачные обёртки операторов
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
Отрицатели
(C++17)
Поисковики
Компараторы с ограничениями
Старые связыватели и адаптеры
(до C++17)
(до C++17)
(до C++17)
(до C++17)
(до C++17)(до C++17)(до C++17)(до C++17)
(до C++20)
(до C++20)
(до C++17)(до C++17)
(до C++17)(до C++17)

(до C++17)
(до C++17)(до C++17)(до C++17)(до C++17)
(до C++20)
(до C++20)
 

Объект функция, это любой объект, для которого определён оператор вызова функции. C++ предоставляет множество встроенных объектов функций, а также поддержку для создания и управления новыми объектами функциями.

Содержание

[править] Обёртки функций

std::function обеспечивает поддержку для хранения произвольных объектов функций.

(C++11)
обёртывает вызываемый объект любого типа с указанной сигнатурой вызова функции
(шаблон класса) [править]
исключение, возникающее при вызове пустой std::function
(класс) [править]
(C++11)
создаёт объект функции из указателя на элемент
(шаблон функции) [править]

[править] Вызов функции

std::invoke может вызывать любой Callable объект с заданными аргументами.

(C++17)
(C++23)
вызывает любой Callable объект с данными аргументами и имеет возможность указать тип возврата (начиная с C++23)
(шаблон функции) [править]

[править] Идентичность

std::identity это объект функции идентификации: он возвращает свой аргумент без изменений.

(C++20)
объект функция, который возвращает свой аргумент без изменений
(класс) [править]

[править] Частичное применение функции

std::bind_front и std::bind обеспечивают поддержку частичного применения функции, то есть привязку аргументов к функциям для создания новых функций.

связывает переменное количество аргументов по порядку с объектом функцией
(шаблон функции) [править]
(C++11)
связывает один или несколько аргументов с объектом функцией
(шаблон функции) [править]
указывает, что объект является выражением std::bind или может использоваться самостоятельно
(шаблон класса) [править]
указывает, что объект является стандартным заполнителем или может использоваться самостоятельно
(шаблон класса) [править]
Определены в пространстве имён std::placeholders
заполнители для несвязанных аргументов в выражении std::bind
(константа) [править]

[править] Отрицатели

std::not_fn создаёт объект функции, который отрицает результат переданного ему вызываемого объекта.

(C++17)
создаёт объект функции, который возвращает дополнение результата объекта функции, который он содержит
(шаблон функции) [править]

[править] Поисковые функции

Предусмотрены поисковые функции, реализующие несколько алгоритмов поиска по строкам, которые могут использоваться либо напрямую, либо с std::search.

реализация алгоритма поиска стандартной библиотеки C++
(шаблон класса) [править]
реализация алгоритма поиска Бойера-Мура
(шаблон класса) [править]
реализация алгоритма поиска Бойера-Мура-Хорспула
(шаблон класса) [править]

[править] Обёртки ссылок

Обёртки ссылок позволяют сохранять ссылочные аргументы в копируемых объектах функциях:

обёртка ссылок CopyConstructible и CopyAssignable
(шаблон класса) [править]
(C++11)
(C++11)
создаёт std::reference_wrapper с типом, выведенным из его аргумента
(шаблон функции) [править]
получает ссылочный тип, заключённый в std::reference_wrapper
(шаблон класса) [править]

[править] Объекты функции операторы

C++ определяет несколько объектов функций, которые представляют общие арифметические и логические операции:

Арифметические операции
объект функция, реализующий x + y
(шаблон класса) [править]
объект функция, реализующий x - y
(шаблон класса) [править]
объект функция, реализующий x * y
(шаблон класса) [править]
объект функция, реализующий x / y
(шаблон класса) [править]
объект функция, реализующий x % y
(шаблон класса) [править]
объект функция, реализующий -x
(шаблон класса) [править]
Сравнения
объект функция, реализующий x == y
(шаблон класса) [править]
объект функция, реализующий x != y
(шаблон класса) [править]
объект функция, реализующий x > y
(шаблон класса) [править]
объект функции, реализующий x < y
(шаблон класса) [править]
объект функция, реализующий x >= y
(шаблон класса) [править]
объект функция, реализующий x <= y
(шаблон класса) [править]
Логические операции
объект функция, реализующий x && y
(шаблон класса) [править]
объект функция, реализующий x || y
(шаблон класса) [править]
объект функция, реализующий !x
(шаблон класса) [править]
Побитовые операции
объект функция, реализующий x & y
(шаблон класса) [править]
объект функция, реализующий x | y
(шаблон класса) [править]
объект функция, реализующий x ^ y
(шаблон класса) [править]
(C++14)
объект функция, реализующий ~x
(шаблон класса) [править]

[править] Объекты функции ограниченного сравнения

C++20 определяет набор объектов функций ограниченного сравнения. Операторы равенства (ranges::equal_to и ranges::not_equal_to) требуют типы аргументов для модели equality_comparable_with. Операторы отношения (ranges::less, ranges::greater, ranges::less_equal и ranges::greater_equal) требуют типы аргументов модели totally_ordered_with. Оператору трёхстороннего сравнения требуется (compare_three_way) тип для модели three_way_comparable_with.

объект функция, реализующий x == y
(класс) [править]
объект функция, реализующий x != y
(класс) [править]
объект функция, реализующий x < y
(класс) [править]
объект функция, реализующий x > y
(класс) [править]
объект функция, реализующий x <= y
(класс) [править]
объект функция, реализующий x >= y
(класс) [править]
реализация объекта функции x <=> y
(класс) [править]

[править] Старые привязки и адаптеры

Несколько утилит, которые обеспечивали раннюю функциональную поддержку, устарели в C++11 и удалены в C++17 (старые отрицатели устарели в C++17 и удалены в C++20):

Основа
(устарело в C++11)
(убрано в C++17)
совместимый с адаптором базовый класс унарной функции
(шаблон класса) [править]
(deprecated in C++11)
(убрано в C++17)
совместимый с адаптером базовый класс двоичной функции
(шаблон класса) [править]
Привязки
(устарело в C++11)(убрано в C++17)
объект функции, содержащий двоичную функцию и один из её аргументов
(шаблон класса) [править]
(устарело в C++11)(убрано в C++17)
связывает один аргумент с двоичной функцией
(шаблон функции) [править]
Адаптоты функций
(устарело в C++11)
(убрано в C++17)
совместимая с адаптором обёртка для указателя на унарную функцию
(шаблон класса) [править]
(устарело в C++11)
(убрано в C++17)
совместимая с адаптором обёртка для указателя на двоичную функцию
(шаблон класса) [править]
(устарело в C++11)
(убрано в C++17)
создаёт совместимую с адаптором обёртку объекта функции из указателя на функцию
(шаблон функции) [править]
(устарело в C++11)
(убрано в C++17)
оболочка для указателя на нульарную или унарную функцию-элемент, вызываемую с указателем на объект
(шаблон класса) [править]
(устарело в C++11)
(убрано в C++17)
создаёт оболочку из указателя на функцию-элемент, вызываемую через указатель на объект
(шаблон функции) [править]
(устарело в C++11)
(убрано в C++17)
оболочка для указателя на нульарную или унарную функцию-элемент, вызываемую со ссылкой на объект
(шаблон класса) [править]
(устарело в C++11)
(убрано в C++17)
создаёт оболочку из указателя на функцию-элемент, вызываемую со ссылкой на объект
(шаблон функции) [править]
(устарело в C++17)
(убрано в C++20)
обёртка объекта функции, возвращающая дополнение к унарному предикату, содержащемуся в ней
(шаблон класса) [править]
(deprecated in C++17)
(убрано в C++20)
объект функции-обёртки, возвращающий дополнение к содержащемуся в нём двоичному предикату
(шаблон класса) [править]
(устарело в C++17)
(убрано в C++20)
создаёт пользовательский объект std::unary_negate
(шаблон функции) [править]
(устарело в C++17)
(убрано в C++20)
создаёт пользовательский объект std::binary_negate
(шаблон функции) [править]
X Tutup