Yes, it's allowed according to the very bullet Rakete1111 pointed out. And there's no need to just assume it can be done, it's done according to the rules of placeholder type deduction at [dcl.type.auto.deduct]/4, emphasis mine:
If the placeholder is the auto type-specifier, the deduced type T'
replacing T is determined using the rules for template argument
deduction. Obtain P from T by replacing the occurrences of auto with
either a new invented type template parameter U or, if the
initialization is copy-list-initialization, with
std::initializer_list. Deduce a value for U using the rules of
template argument deduction from a function call, where P is a
function template parameter type and the corresponding argument is e.
If the deduction fails, the declaration is ill-formed. Otherwise, T'
is obtained by substituting the deduced U into P.
Where [temp.deduct.call]/6 has this paragraph, pertaining to your use case:
When P is a function type, function pointer type, or pointer to member
function type:
If the argument is an overload set containing one or more function templates, the parameter is treated as a non-deduced context.
If the argument is an overload set (not containing function templates), trial argument deduction is attempted using each of the
members of the set. If deduction succeeds for only one of the
overload set members, that member is used as the argument value for
the deduction. If deduction succeeds for more than one member of the
overload set the parameter is treated as a non-deduced context.
So there you have it in all its glory.