質問

iは、メンバー関数へのポインターの場合に特化したテンプレートが必要です。これを検出する方法はありますか?今、私はstruct isPtrToMemberFuncを宣言してから、追加のテンプレート(クラスTType = void)を各クラスに追加し(今は1つだけ)、追加のテンプレートを特殊化してisPtrToMemberFuncかどうかを確認します。これを自動的に検出する方法はありますか?そうでない場合、私の現在の方法は最良の解決策ですか?

役に立ちましたか?

解決

方法はありますが、各メンバー関数の引数とconst / volatile修飾子の数ごとに特殊化を繰り返すことが含まれます。それを行う簡単な方法は、 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";
        // ...
    }
}

こちら。

scroll top