Я не уверен, что ваш вывод правильный.Я не видел типов , для которых нет манифеста, но я видел ситуации , когда механизм вывода типов не может их предоставить.
Специальнов таких ситуациях логического вывода:
scala> def bar[T: Manifest](a: Array[T]) = Array.ofDim[T](3)
bar: [T](a: Array[T])(implicit evidence$1: Manifest[T])Array[T]
scala> def bar2[T](a: Array[T]) = bar(a)
<console>:8: error: No Manifest available for T.
def bar2[T](a: Array[T]) = bar(a)
^
Кажется, что если манифест «не передан», он недоступен на нижнем уровне - так что мы можем сказать
scala> def bar2[T: Manifest](a: Array[T]) = bar(a)
bar2: [T](a: Array[T])(implicit evidence$1: Manifest[T])Array[T]
или
scala> def bar2[T](a: Array[T])(implicit m: Manifest[T]) = bar(a)
bar2: [T](a: Array[T])(implicit m: Manifest[T])Array[T]
Впрочем, почему я так не знаю?