I'm not sure your conclusion is correct. I have not seen types for which there is no manifest, but I have seen situations where the inferencer type does not seem to be able to provide it.
In particular, when embedding such output situations:
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) ^
It seems that if the manifest did not โpassโ, it is not available at a lower level, so we can say
scala> def bar2[T: Manifest](a: Array[T]) = bar(a) bar2: [T](a: Array[T])(implicit evidence$1: Manifest[T])Array[T]
or
scala> def bar2[T](a: Array[T])(implicit m: Manifest[T]) = bar(a) bar2: [T](a: Array[T])(implicit m: Manifest[T])Array[T]
However, why I do not know such behavior.
source share