Updated:

less than 1 minute read

개요

  • 호출 가능 여부 확인


예제

  • 코드
     #include <iostream>
     #include <string>
     #include <type_traits>
        
     using namespace std;
        
     class A {
     	public:
     		string func(int i) { return "a"; }
     };
        
     auto func(int i) { return "a"; };
        
     int main() {
     	cout << is_invocable<decltype(func), int>::value << endl;
     	cout << is_invocable<decltype(func), string>::value << endl;
     	cout << is_invocable_r<string, decltype(func), int>::value << endl;
     	cout << is_invocable_r<string, decltype(func), string>::value << endl;
        
     	cout << "------" << endl;
        
     	cout << is_invocable<decltype(&A::func), A, int>::value << endl;
     	cout << is_invocable<decltype(&A::func), A, string>::value << endl;
     	cout << is_invocable_r<string, decltype(&A::func), A, int>::value << endl;
     	cout << is_invocable_r<string, decltype(&A::func), A, string>::value
     		 << endl;
        
     	return 0;
     }
    
  • 실행 결과
     1
     0
     1
     0
     ------
     1
     0
     1
     0