мне нужен специализированный шаблон в случае указателя на функцию-член. Есть ли способ обнаружить это? прямо сейчас я объявляю struct isPtrToMemberFunc, затем добавляю дополнительный шаблон (класс TType=void) к каждому классу (сейчас только 1) и специализирую дополнительный шаблон, чтобы увидеть, isPtrToMemberFunc. Есть ли способ определить это автоматически? если нет, то мой текущий метод - лучшее решение?
можно ли обнаружить указатель на функцию-член?
Ответы (1)
Есть способ, но он включает в себя повторение вашей специализации для каждого количества аргументов и модификаторов 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";
// ...
}
}
Загрузите его с здесь.
person
Johannes Schaub - litb
schedule
04.01.2009