2

使用技巧(由Olivier Langlois描述),我可以确定一个类是否定义了类型:

template<typename T> struct hasType
{
    template<typename C> static char test( typename C::Type );
    template<typename C> static char* test(...);
    enum{ Value= sizeof(test<T>(0))==1 };
};

我还可以确定一个类是否有变量:

template<typename T> struct hasType
{
    template<typename C> static char test( decltype(C::var) );
    template<typename C> static char* test(...);
    enum{ Value= sizeof(test<T>(0))==1 };
};

但是,decltype(c::func)nur decltype(c::func())(取决于参数)都不适用于成员函数。有没有办法做到这一点,还是我必须在每个类中创建一个仿函数并用 检测它typename C::functor

编辑:你们都是对的,但是因为我还必须测试我将使用的类型decltype(&C::func)(这显然应该是一个指针)。

4

0 回答 0