Namespaces
Variants

function_ref에 대한 연역 가이드std::function_ref

From 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 F >
function_ref( F* ) -> function_ref<F>;
에 정의됨 (1) (C++26부터)
template< auto f >
function_ref( std::nontype_t<f> ) -> function_ref</*see below*/>;
(2) (C++26부터)
template< auto f, class T >
function_ref( std::nontype_t<f>, T&& ) -> function_ref</*see below*/>;
(3) (C++26부터)
1) 이 오버로드는 std::is_function_v<F>가 true인 경우에만 오버로드 해결에 참여합니다.
2) 타입 F를 std::remove_pointer_t<decltype(f)>이라고 합시다. 이 오버로드는 std::is_function_v<F>가 true인 경우에만 오버로드 해결에 참여합니다. 연역된 타입은 std::function_ref<F>입니다.
3) 타입 F를 decltype(f)이라고 합시다. 이 오버로드는 다음 조건에서만 오버로드 해결에 참여합니다 :
  • F가 형태 R(G::*)(A...) noexcept(E) (선택적으로 cv-한정됨, 선택적으로 noexcept, 선택적으로 lvalue 참조 한정됨)이고 타입이 G인 경우, 또는
  • F가 형태 M G::*이고 타입이 G, 객체 타입이 M인 경우, 이때 R를 std::invoke_result_t<F, T&>으로, A...를 빈 팩으로, E를 false로 둡니다, 또는
  • F가 형태 R(*)(G, A...) noexcept(E)이고 타입이 G인 경우.
연역된 타입은 std::function_ref<R(A...) noexcept(E)>입니다.

예제