Code:
struct
{
    template <class T, typename U>
    operator U T::* () const { return static_cast<U T::*> (0); }
} null_ptr_to_member;
I'm confused by the template in this code, which I found here: Solving the C++ NULL Type Safety Problem specifically the U T::*, which doesn't make any sense to me. What is the ::*, and how is there more than one thing as the operator type and single template argument?