はい、そうですが、コンテキストにバインドされた型には、より高い種類の型パラメーターが必要です(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
アップデート
タイプエイリアスを使用して、より種類の多いタイプパラメータを1次コンテキストバインドタイプでバインドできるようにすることができます。型エイリアスを型レベル関数として使用して、1次型からより高種類の型を作成します。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]