I found this type trait in the Alexandrescu book and I have no idea how to understand this specification
template <typename T>
class TypeTraits
{
private:
template <class U> struct PToMTraits
{
enum { result = false };
};
template <class U, class V>
struct PToMTraits<U V::*>
{
enum { result = true };
};
public:
enum { isMemberPointer = PToMTraits<T>::result };
...
};