close
Пространства имён
Варианты
Действия

std::ptr_fun

Материал из cppreference.com
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования функциональности библиотеки (C++20)    
Управление динамической памятью
Программные утилиты
Поддержка сопрограмм (C++20)
Вариативные функции
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Дата и время
Функциональные объекты
Библиотека форматирования (C++20)
(C++11)
Операторы отношения (устарело в 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++11)
(C++17)
(C++23)
Элементарные преобразования строк
(C++17)
(C++17)
 
Объекты функции
Функции обёртки
(C++11)
(C++11)
Применение частичных функций
(C++20)(C++23)
(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++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*)
 
<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++17)(C++23)
вызывает любой Callable объект с данными аргументами и имеет возможность указать тип возврата (начиная с C++23)
(шаблон функции) [править]
(C++17)
создаёт объект функции, который возвращает дополнение результата объекта функции, который он содержит
(шаблон функции) [править]