можно как без инстансов (тогда это просто функция из Void), можно и без констрейнтов
обе ошибки правильные, но второе компилятору вывести намного проще, потому что он просто ищет инстансы и не находит инстанс для любого типа, вот вам и ошибка что инстанса для любого типа нет
нет, если без инстансов это полиморфная функция, ее можно сбилдить и через миллион лет использовать написав инстанс. для тайпчека и компиляции ни один инстанс не нужен, нужен только класс