1

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

4

1 に答える 1

6

方法はありますが、引数の数ごとに特殊化を繰り返し、それらのメンバー関数の const/volatile 修飾子を繰り返すことが含まれます。これを行う簡単な方法は、boost.functiontypeswhich を使用することです。

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";
        // ...
    }
}

ここから入手してください。

于 2009-01-04T14:05:23.853 に答える