Типы не совпадают, но нет разницы, когда они используются в качестве типа параметра в объявлении функции.
В int (*cmp)(Type, Type)
, cmp
имеет тип указателя на функцию (или тип "указатель на функцию").
В int (cmp)(Type, Type)
, cmp
имеет тип функции (т. е. вообще не является указателем).
Однако C и C ++у обоих есть правило, что любой параметр, имеющий тип функции, неявно преобразуется в соответствующий тип указателя на функцию, так же как любой параметр, имеющий тип массива, неявно преобразуется в соответствующий тип указателя.