Namespaces
Variants

std::mem_fun_ref

ko.cppreference.net 참고 자료
 
 
유틸리티 라이브러리
일반 유틸리티
관계 연산자 (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++23)
항등 함수 객체
(C++20)
투명 연산자 래퍼
(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까지*)
 
헤더 <functional>
template< class Res, class T >
std::mem_fun_ref_t<Res,T> mem_fun_ref( Res (T::*f)() );
에 정의됨 (1) (C++11에서 폐지됨)
(C++17에서 제거됨)
template< class Res, class T >
std::const_mem_fun_ref_t<Res,T> mem_fun_ref( Res (T::*f)() const );
(1) (C++11에서 폐지됨)
(C++17에서 제거됨)
template< class Res, class T, class Arg >
std::mem_fun1_ref_t<Res,T,Arg> mem_fun_ref( Res (T::*f)(Arg) );
(2) (C++11에서 폐지됨)
(C++17에서 제거됨)
template< class Res, class T, class Arg >
std::const_mem_fun1_ref_t<Res,T,Arg> mem_fun_ref( Res (T::*f)(Arg) const );
(2) (C++11에서 폐지됨)
(C++17에서 제거됨)

템플릿 인수에서 대상 타입을 추론하여 멤버 함수 래퍼 객체를 생성합니다. 래퍼 객체는 T 타입의 객체에 대한 참조를 자신의 operator()에 대한 첫 번째 매개변수로 기대합니다.

1) 효과적으로 std::mem_fun_ref_t<S,T>(f) 또는 std::const_mem_fun_ref_t<S,T>(f)를 호출합니다.
2) 효과적으로 std::mem_fun1_ref_t<S,T>(f) 또는 std::const_mem_fun1_ref_t<S,T>(f)를 호출합니다.

이 함수와 관련 타입들은 C++11에서 폐지되고 C++17에서 제거되었으며, 더 일반적인 std::mem_fn 및 std::bind로 대체되었습니다. 이 둘 모두 멤버 함수에서 호출 가능한 어댑터 호환 함수 객체를 생성합니다.

매개변수

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

반환값

f 를 감싸는 함수 객체.

예외

구현에서 정의된 예외를 던질 수 있습니다.

참고 사항

std:: mem_fun 와 std :: mem_fun_ref 의 차이점은 전자가 객체에 대한 포인터를 기대하는 함수 래퍼를 생성하는 반면, 후자는 참조를 기대한다는 것입니다.

예제

std::mem_fun_ref 를 사용하여 std::string 의 멤버 함수 size() 를 바인딩합니다.

#include <algorithm>
#include <functional>
#include <iostream>
#include <iterator>
#include <string>
#include <vector>
int main()
{
    std::vector<std::string> v = {"once", "upon", "a", "time"};
    std::transform(v.cbegin(), v.cend(),
                   std::ostream_iterator<std::size_t>(std::cout, " "),
                   std::mem_fun_ref(&std::string::size));
}

출력:

4 4 1 4

참고 항목

(C++11에서 사용 중단됨) (C++17에서 제거됨)
객체 포인터로 호출 가능한 멤버 함수 포인터로부터 래퍼를 생성함
(함수 템플릿)