メンバー関数へのポインターの場合に特化したテンプレートが必要です。これを検出する方法はありますか?今、私は構造体 isPtrToMemberFunc を宣言し、追加のテンプレート (クラス TType=void) を各クラス (現在は 1 つだけ) に追加し、追加のテンプレートを特殊化して、その isPtrToMemberFunc かどうかを確認します。これを自動的に検出する方法はありますか?そうでない場合、私の現在の方法が最善の解決策ですか?
1 に答える
6
方法はありますが、引数の数ごとに特殊化を繰り返し、それらのメンバー関数の const/volatile 修飾子を繰り返すことが含まれます。これを行う簡単な方法は、boost.functiontypes
which を使用することです。
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 に答える