можно ли обнаружить указатель на функцию-член?
-
03-07-2019 - |
Вопрос
мне нужен специализированный шаблон в случае указателя на функцию-член.Есть ли способ обнаружить это?прямо сейчас я объявляю структуру isPtrToMemberFunc, затем добавляю дополнительный шаблон (класс TType=void) к каждому классу (сейчас только 1) и специализирую дополнительный шаблон, чтобы увидеть, является ли он isPtrToMemberFunc.Есть ли способ обнаружить это автоматически?если нет, является ли мой текущий метод лучшим решением?
Решение
Есть способ, но он включает в себя повторение своей специализации для каждого количества аргументов и константных/изменчивых модификаторов для этих функций-членов.Более простой способ сделать это — использовать 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