C++ named requirements: Callable
Callable 타입은 INVOKE 와 INVOKE<R> 연산(예를 들어 std::function , std::bind , 그리고 std::thread::thread 에서 사용됨)이 적용 가능한 타입입니다.
|
|
(C++17부터) |
|
|
(C++23부터) |
목차 |
요구사항
타입
T
가 다음 조건을 만족하면
Callable
을 만족합니다
주어진
-
f,T타입의 객체, -
ArgTypes, 적절한 인수 타입 목록, -
R, 적절한 반환 타입.
다음 표현식들은 유효해야 합니다:
| Expression | Requirements |
|---|---|
| INVOKE<R> ( f, std:: declval < ArgTypes > ( ) ... ) | 해당 표현식이 평가되지 않은 컨텍스트에서 올바른 형태를 가짐. |
참고 사항
데이터 멤버에 대한 포인터 는 Callable 입니다, 비록 함수 호출이 발생하지 않더라도.
표준 라이브러리
또한, 다음 표준 라이브러리 기능들은 Callable 타입을 모두 허용합니다 ( FunctionObject 만이 아닌):
|
(C++11)
|
복사 생성 가능한 모든 호출 가능 객체의 복사 가능 래퍼
(클래스 템플릿) |
|
(C++23)
|
주어진 호출 시그니처에서 한정자를 지원하는 모든 호출 가능 객체의 이동 전용 래퍼
(클래스 템플릿) |
|
(C++26)
|
주어진 호출 시그니처에서 한정자를 지원하는 모든 복사 생성 가능한 호출 가능 객체의 복사 가능 래퍼
(클래스 템플릿) |
|
(C++26)
|
모든 호출 가능 객체의 비소유 래퍼
(클래스 템플릿) |
|
(C++11)
|
함수 객체에 하나 이상의 인수를 바인딩합니다
(함수 템플릿) |
|
(C++20)
(C++23)
|
가변 개수의 인수를 순서대로 함수 객체에 바인딩합니다
(함수 템플릿) |
|
(C++11)
|
CopyConstructible
및
CopyAssignable
참조 래퍼
(클래스 템플릿) |
|
(C++11)
(removed in C++20)
(C++17)
|
호출 가능 객체를 인수 집합으로 호출한 결과 타입을 추론합니다
(클래스 템플릿) |
|
(C++11)
|
별도의 스레드를 관리합니다
(클래스) |
|
(C++20)
|
std::thread
자동 조인 및 취소 지원을 포함한
(클래스) |
|
(C++11)
|
여러 스레드에서 호출되더라도 함수를 한 번만 호출합니다
(함수 템플릿) |
|
(C++11)
|
함수를 비동기적으로 실행하고(새 스레드에서 실행될 수 있음) 결과를 담을
std::future
를 반환합니다
(함수 템플릿) |
|
(C++11)
|
함수를 패키징하여 비동기적 검색을 위해 반환 값을 저장합니다
(클래스 템플릿) |
참고 항목
|
주어진 인수 타입들로 (마치
std::invoke
를 사용하듯) 호출 가능한 타입인지 확인합니다
(클래스 템플릿) |
|
|
(C++20)
|
호출 가능 타입이 주어진 인수 타입 집합으로 호출될 수 있음을 명시합니다
(컨셉) |
|
(C++17)
(C++23)
|
주어진 인수들로 임의의
Callable
객체를 호출합니다
및 반환 타입 지정 가능
(C++23부터)
(함수 템플릿) |