メンバー関数へのポインターを検出することは可能ですか?
-
03-07-2019 - |
質問
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";
// ...
}
}
こちら。
所属していません StackOverflow