C++: void_t
개요
- 모든 유형을 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