functional_ptr_fun

functional_ptr_fun (함수 포인터를 함수 객체로 변환)

이 페이지는 C++ 표준 라이브러리의 std::ptr_fun 함수 템플릿에 대해 다뤄요. ptr_fun은 일반 함수 포인터를 std::pointer_to_unary_function 또는 std::pointer_to_binary_function 형태의 함수 객체로 감싸서, 알고리즘과 같은 함수자 어댑터에서 사용할 수 있게 해줘요. C++11부터 std::functionstd::ref로 대체되어 폐기되었고, C++17에서 완전히 제거되었어요.

출처: cppreference

본문

<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)를 생성해요.

이 함수와 관련 타입들은 C++11부터 더 일반적인 std::functionstd::ref를 위해 폐기되었어요. 두 기능 모두 일반 함수에서 호출 가능한 어댑터 호환 함수 객체를 만들어 주거든요.

매개변수

| f | - | 래퍼를 생성할 함수에 대한 포인터 |

반환값

f를 감싸는 함수 객체를 반환해요.

예외

구현 정의 예외를 던질 수 있어요.

예제

#include <algorithm>
#include <functional>
#include <iostream>
#include <string_view>

constexpr bool is_vowel(char c)
{
    return std::string_view{"aeoiuAEIOU"}.find(c) != std::string_view::npos;
}

int main()
{
    std::string_view s = "Hello, world!";
    std::ranges::copy_if(s, std::ostreambuf_iterator<char>(std::cout),
        std::not1(std::ptr_fun(is_vowel)));
#if 0
// C++11 alternatives:
        std::not1(std::cref(is_vowel)));
        std::not1(std::function<bool(char)>(is_vowel)));
        [](char c) { return !is_vowel(c); });
// C++17 alternatives:
        std::not_fn(is_vowel));
#endif
}

출력:

Hll, wrld!

같이 보기

function (C++11) 복사 생성 가능한 모든 호출 가능 객체의 복사 가능한 래퍼 (클래스 템플릿) [edit]
move_only_function (C++23) 주어진 호출 시그니처에서 한정사를 지원하는 모든 호출 가능 객체의 이동 전용 래퍼 (클래스 템플릿) [edit]
invoke invoke_r (C++17) (C++23) 주어진 인자로 임의의 Callable 객체를 호출하고 반환 타입을 지정할 수 있게 해줌 (C++23부터) (함수 템플릿) [edit]
not_fn (C++17) 보유한 함수 객체의 결과의 보수를 반환하는 함수 객체를 생성함 (함수 템플릿) [edit]

더 알아보기 (Learn more)

cppreference