template <typename T>
struct Comparator : public std::binary_function<T,T,bool>
{
    bool operator()(const T &first, const T &second)
    {
        return first < second;
    }
};
template <typename T>
bool compare(T &, T &) = &Comparator::operator();

// 10: error: C2955: 'Comparator': use of class template requires template argument list
// 10: error: C2059: syntax error: '&'