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.