Это на самом деле не проблема неявного преобразования, а проблема вывода типа.Когда вы звоните в Adapter (путь), ничего неявного нет.
Если вы передаете параметр типа, он работает.
toAdapter[User, QUser](path).someMethod
Может работать даже с неявным преобразованием:
(path: RelationalPathAdapter[User, QUser]).someMethod
, но, конечно, это бесполезно.
Правильный способ записи неявного:
implicit def toAdapter[T, R[X] <: RelationalPath[X]](p: R[T])
= new RelationalPathAdapter[T, R[T]](p)