문제

포인터 투 관련 기능 케이스에서 전문 템플릿을 원합니다. 이것을 감지하는 방법이 있습니까? 지금은 struct isptrtomemberncunc를 선언 한 다음 각 클래스에 추가 템플릿 (class ttype = void)을 추가하고 (지금은 1) 추가 템플릿을 전문화하여 ISPtrtomemberPunc인지 확인합니다. 이것을 자동으로 감지하는 방법이 있습니까? 내 현재 방법이 아닌 경우 최상의 솔루션입니까?

도움이 되었습니까?

해결책

방법이 있지만, 모든 인수에 대한 전문화를 반복하고 해당 멤버 함수에 대한 const/휘발성 수정자를 반복하는 것이 포함됩니다. 더 쉬운 방법은 사용하는 것입니다 boost.functiontypes 그것은 당신을 위해 그것을합니다 :

template<typename T>
void doit(T t) {
    if(boost::function_types::is_member_function_pointer<T>::value) {
        std::cout << "it is";
        // ...
    } else {
        std::cout << "it is not";
        // ...
    }
}

그것을 잡아 여기.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top