std::ptr_fun
Материал из cppreference.com
<tbody>
</tbody>
| Определено в заголовочном файле <functional>
|
||
template< class Arg, class Result > std::pointer_to_unary_function<Arg,Result> ptr_fun( Result (*f)(Arg) ); |
(1) | (устарело в C++11) (удалено в C++17) |
template< class Arg1, class Arg2, class Result > std::pointer_to_binary_function<Arg1,Arg2,Result> ptr_fun( Result (*f)(Arg1, Arg2) ); |
(2) | (устарело в C++11) (удалено в C++17) |
Создаёт функциональный объект-оболочку (либо std::pointer_to_unary_function, либо std::pointer_to_binary_function), выводя целевой тип из аргументов шаблона.
1) Эффективно вызывает
std::pointer_to_unary_function<Arg,Result>(f).2) Эффективно вызывает
std::pointer_to_binary_function<Arg1,Arg2,Result>(f).Эта функция и связанные с ней типы устарели, начиная с C++11, в пользу более общих std::function и std::ref, оба из которых создают совместимые с адаптером вызываемые функциональные объекты из простых функций.
Параметр
| f | — | указатель на функцию для создания оболочки |
Возвращаемое значение
Функциональный объект, обёртывающий f.
Исключения
Может генерировать исключения, определённые реализацией.
Пример
Запустить этот код
#include <algorithm>
#include <functional>
#include <iostream>
#include <string_view>
constexpr bool is_vowel(char c)
{
return std::string_view{"аеоиуАЕОИУ"}.find(c) != std::string_view::npos;
}
int main()
{
std::string_view s = "Привет, мир!";
std::ranges::copy_if(s, std::ostreambuf_iterator<char>(std::cout),
std::not1(std::ptr_fun(is_vowel)));
#if 0
// альтернативы C++11:
std::not1(std::cref(is_vowel)));
std::not1(std::function<bool(char)>(is_vowel)));
[](char c){ return !is_vowel(c); });
// альтернативы C++17:
std::not_fn(is_vowel));
#endif
}
Вывод:
Првт, мр!
Смотрите также
(C++11) |
обёртывает вызываемый объект любого конструируемого копированием типа с указанной сигнатурой вызова функции (шаблон класса) |
(C++23) |
обёртывает вызываемый объект любого типа с указанной сигнатурой вызова функции (шаблон класса) |
(C++17)(C++23) |
вызывает любой Callable объект с данными аргументами и имеет возможность указать тип возврата (начиная с C++23) (шаблон функции) |
(C++17) |
создаёт объект функции, который возвращает дополнение результата объекта функции, который он содержит (шаблон функции) |