template 判定是否是class
c++ template中有一个例子:
template < typename T >
class IsClass {
private:
typedef char one;
typedef struct { char a[2]; } two;
template < typename C >
static one test( int C::* );
template < typename C >
static two test(...);
public:
enum { Yes = sizeof( test<T>(0) ) == 1 }; //原来的是 IsClass<T>::test<T>(0),但是VS编译不了
enum { No = !Yes };
};
想问的是:“ int C::*”是什么东西?感觉不是指向成员函数的指针
[解决办法]
是数据成员指针.和类成员函数指针 一样都是类成员指针.