I have a visitor class resembling this:

struct Visitor 
{
    template <typename T>
    void operator()(T t)
    {
        ...
    }

    void operator()(bool b)
    {
        ...
    }
};

Clearly, operator()(bool b) is intended to be a specialization of the preceding template function.

However, it doesn't have the template<> syntax that I'm used to seeing before it, declaring this as a template specialization. But it does compile.

Is this safe? Is this correct?

Edit
Report