functional_function_ref

functional_function_ref (비소유 함수 래퍼, C++26)

std::function_ref는 비소유(non-owning) 함수 래퍼예요. 이 타입은 함수, 람다 표현식, 바인드 표현식 또는 다른 함수 객체와 같은 Callable 대상을 참조로 저장하고 호출할 수 있게 해줘요. 멤버 함수 포인터나 멤버 객체 포인터는 직접 저장할 수 없지만, std::nontype을 사용하면 함수 포인터, 멤버 함수 포인터, 멤버 객체 포인터를 전달해 std::function_ref를 만들 수 있어요.

std::function_ref는 템플릿 매개변수에 제공된 cv 한정자(volatile 제외)와 noexcept 지정자의 모든 가능한 조합을 지원해요. 모든 std::function_ref 특수화는 TriviallyCopyable 타입이며 copyable 요구 사항을 만족해요.

출처: cppreference

본문

정의

template < class ... > class function_ref ; // not defined
template < class R , class ... Args > class function_ref < R ( Args ...) > ; template < class R , class ... Args > class function_ref < R ( Args ...) noexcept > ; template < class R , class ... Args > class function_ref < R ( Args ...) const > ; template < class R , class ... Args > class function_ref < R ( Args ...) const noexcept > ;

위 선언은 <functional> 헤더에 정의되어 있어요. (1)은 기본 템플릿이고, (2)는 함수 시그니처에 따라 특수화되는 형태예요. noexcept, const 등의 한정자를 조합해서 다양한 호출 시그니처를 표현할 수 있어요.

멤버 유형

멤버 정의
BoundEntityType (private) 지정되지 않은 TriviallyCopyable 타입으로, copyable을 만족하고 객체 포인터 값 또는 함수 포인터 값을 저장할 수 있어요 (설명 전용 멤버 타입*)
FunctionPointerType (private) R ( * )( BoundEntityType , Args && ...) noexcept ( noex ) 여기서 noex는 std::function_ref의 템플릿 매개변수 일부로 함수 시그니처에 noexcept가 있으면 true, 그렇지 않으면 false예요 (설명 전용 멤버 타입*)

데이터 멤버

멤버 정의
BoundEntityType bound-entity 바인딩된 엔티티 객체 (설명 전용 멤버 객체*)
FunctionPointerType thunk-ptr 저장된 함수 포인터 (설명 전용 멤버 객체*)

멤버 함수

멤버 함수 설명
(constructor) 새로운 function_ref 객체를 생성해요 (공개 멤버 함수) [edit]
operator= function_ref를 할당해요 (공개 멤버 함수) [edit]
operator() function_ref의 저장된 thunk를 호출해요 (공개 멤버 함수) [edit]

추론 가이드

이 페이지에는 별도의 추론 가이드 내용이 없어요. std::function_ref는 명시적으로 템플릿 인자를 지정해서 사용하는 것을 기본으로 해요.

참고

Feature-test 매크로 표준 기능
__cpp_lib_function_ref 202306L (C++26) std::function_ref

예제

이 섹션은 불완전해요. 이유: 예제가 아직 추가되지 않았어요.

같이 보기

이름 설명
function (C++11) 복사 생성 가능한 모든 Callable 객체의 복사 가능 래퍼 (클래스 템플릿) [edit]
copyable_function (C++26) 주어진 호출 시그니처에서 한정자를 지원하는 복사 가능한 Callable 객체의 래퍼 (클래스 템플릿) [edit]
move_only_function (C++23) 주어진 호출 시그니처에서 한정자를 지원하는 이동 전용 Callable 객체의 래퍼 (클래스 템플릿) [edit]
nontype nontype_t (C++26) 값 생성 태그 (태그) [edit]

더 알아보기 (Learn more)

cppreference