Да, это так, но тип, связанный с контекстом, должен иметь более высокий параметр типа kinded (чего нет у ClassManifest).
scala> trait HKTypeClass[CC[_]]
defined trait HKTypeClass
scala> implicit def listHKTC = new HKTypeClass[List] {}
listHKTC: java.lang.Object with HKTypeClass[List]
scala> def frob[CC[_] : HKTypeClass] = implicitly[HKTypeClass[CC]]
frob: [CC[_]](implicit evidence$1: HKTypeClass[CC])HKTypeClass[CC]
scala> frob[List]
res0: HKTypeClass[List] = $anon$1@13e02ed
Обновление
Можно использовать псевдоним типа, чтобы позволить параметру типа с более высоким родом быть связанным типом контекста первого порядка.Мы используем псевдоним типа в качестве функции уровня типа, чтобы сделать тип с более высоким родом из типа первого порядка.Для ClassManifest это может выглядеть следующим образом:
scala> type HKClassManifest[CC[_]] = ClassManifest[CC[_]]
defined type alias HKClassManifest
scala> def frob[CC[_] : HKClassManifest] = implicitly[HKClassManifest[CC]]
test: [CC[_]](implicit evidence$1: HKClassManifest[CC])HKClassManifest[CC]
scala> frob[List]
res1: HKClassManifest[List] = scala.collection.immutable.List[Any]
Обратите внимание, что в правой части псевдонима типа CC [_] - это тип первого порядка ... подчеркивание здесь - подстановочный знак.Следовательно, его можно использовать в качестве аргумента типа для ClassManifest.
Обновление
Для полноты следует отметить, что псевдоним типа может быть встроен с использованием типа лямбда,
scala> def frob[CC[_] : ({ type λ[X[_]] = ClassManifest[X[_]] })#λ] = implicitly[ClassManifest[CC[_]]]
frob: [CC[_]](implicit evidence$1: scala.reflect.ClassManifest[CC[_]])scala.reflect.ClassManifest[CC[_]]
scala> frob[List]
res0: scala.reflect.ClassManifest[List[_]] = scala.collection.immutable.List[Any]