2

I've seen some examples for implementing is_class recently, and I'm wondering what the following syntax does:

Classname::*

For example:

template<typename T>
class is_class {
    typedef char yes[1];
    typedef char no [2];
    template<typename C> static yes& test(int C::*); // selected if C is a class type
    template<typename C> static no&  test(...);      // selected otherwise
  public:
    static bool const value = sizeof(test<T>(0)) == sizeof(yes);
}

What does the syntax C::* denote in this case? Does it just require C to have any members / be a namespace? I was unable to find any information about this.

tobspr
  • 8,200
  • 5
  • 33
  • 46

0 Answers0