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] |