Здравствуйте, night beast, Вы писали:
NB>Недавно столкнулся с такой непонятной штукой.
NB>Указатель на мембер-функцию не является указателем.
NB>
NB>#include <iostream>
NB>#define print(msg) std::cout << msg << std::endl;
NB>template<typename T>
NB>struct is_pointer {
NB> static const int value=0;
NB>};
NB>template<typename T>
NB>struct is_pointer<T*> {
NB> static const int value=1;
NB>};
template<typename R, typename C>
struct is_pointer<R (C::*)()> {
static const int value=1;
};
NB>int main (int argv, char * args[] ) {
NB> std::cout << is_pointer<int (test::*)(void) >::value << std::endl;
NB> return 0;
NB>}
NB> |
добавь выделенную специализацию...
в общем случае нада заспециализироваться для функций с 1,2,3,...,N параметрами... |