최대 1 분 소요

개요

  • 모든 유형을 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