Updated:

less than 1 minute read

개요

  • 모든 유형을 void 유형으로 매핑하는 유틸리티 메타 함수
  • 멤버 변수/함수의 존재 유무나 표현식의 유효성을 감지하는 데 사용


예제

  • 코드
     #include <iostream>
     #include <utility>
        
     using namespace std;
        
     class Test {
     	public:
     		void func() {}
     };
        
     template <typename, typename = void> struct has_member_func : false_type {};
        
     template <typename T>
     struct has_member_func<T, void_t<decltype(declval<T>().func())>> : true_type {};
        
     int main() {
     	cout << has_member_func<int>::value << endl;
     	cout << has_member_func<Test>::value << endl;
        
     	return 0;
     }
    
  • 실행 결과
     0
     1