A :: *表示A是类类型的含义

时间:2014-09-14 12:53:50

标签: c++ boost

我已经阅读了boost :: is_class的实现。显然我正在使用SFINAE。 我自己编写了另一个is_class。 我注意到boost的源代码中有一个void(A::*)(void)。 这究竟是什么意思。

这是我的代码:

#include<iostream>

template<typename T>
struct is_class
{
    typedef const char yes_type[1];
    typedef const char no_type[2];

    template<typename A>
    static yes_type& test(void(A::*)(void));
//What's A::*
    template<typename A>
    static no_type& test(...);

    const static bool value = sizeof(test<T>(0)) == sizeof(yes_type);
};

struct A{};
int main()
{
    std::cout<<is_class<A>::value<<std::endl;
    return 0;
}

0 个答案:

没有答案