std::unary_function
Материал из cppreference.com
<tbody>
</tbody>
| Определено в заголовочном файле <functional>
|
||
template <typename ArgumentType, typename ResultType> struct unary_function; |
(устарело в C++11) (удалено в C++17) |
|
unary_function это базовый класс для создания объектов-функций с одним аргументом.
unary_function не определяет operator(); ожидается, что его будут определять производные классы. unary_function предоставляет только два типа argument_type и result_type, определяемые параметрами шаблона.
Некоторые адаптеры объектов функций стандартной библиотеки, такие как std::not1, требуют, чтобы объекты функций, которые они адаптируют, имели некоторые определённые типы; std::not1 требует, чтобы адаптируемый объект функции имел тип с именем argument_type. Создание объектов-функций, которые принимают один аргумент из unary_function, это простой способ сделать их совместимыми с этими адаптерами.
unary_function устарел в C++11.
Типы элементы
| Тип | Определение |
argument_type
|
ArgumentType
|
result_type
|
ResultType
|
Пример
Запустить этот код
#include <algorithm>
#include <functional>
#include <iostream>
#include <vector>
struct less_than_7 : std::unary_function<int, bool>
{
bool operator()(int i) const { return i < 7; }
};
int main()
{
std::vector<int> v;
for (int i = 0; i < 10; ++i) v.push_back(i);
std::cout << std::count_if(v.begin(), v.end(), std::not1(less_than_7()));
/* Решение C++11:
// Приведение к std::function<bool (int)> каким-то образом, даже с лямбдой
std::cout << std::count_if(v.begin(), v.end(),
std::not1(std::function<bool (int)>([](int i){ return i < 7; }))
);
*/
}
Вывод:
3
Смотрите также
(C++11) |
обёртывает вызываемый объект любого конструируемого копированием типа с указанной сигнатурой вызова функции (шаблон класса) |
(C++23) |
обёртывает вызываемый объект любого типа с указанной сигнатурой вызова функции (шаблон класса) |
(устарело в C++11)(удалено в C++17) |
создаёт совместимую с адаптером обёртку функционального объекта из указателя на функцию (шаблон функции) |
(устарело в C++11)(удалено в C++17) |
совместимая с адаптером обёртка для указателя на унарную функцию (шаблон класса) |
(deprecated in C++11)(удалено в C++17) |
совместимый с адаптером базовый класс бинарной функции (шаблон класса) |