Я на самом деле не отвечаю на ваш вопрос (то есть я отвечаю на «как мне сделать эту работу», а не на «почему это не работает»);в любом случае, надеюсь, это поможет кому-то еще добиться некоторого прогресса в направлении ответа.
Итак ... В первом случае компилятор не может правильно сделать вывод, что A является Int, учитывая, что C является List [Int].Честно говоря, я более удивлен тем, что передача списка явно работает, так как отношения между A и C настолько непрямы (у вас есть A и C, поскольку C является подтипом Iterable [A], а C является List [Int], тогда A должен быть Int, а не очень простым выводом ...).
Вы можете заставить его работать, если будете более четко понимать отношения между C и A, например:
scala> implicit def view[A, C[A]](xs: C[A])(implicit ev: C[A] <:< Iterable[A]) =
new { def bar = 0 }
view: [A, C[A]](xs: C[A])(implicit ev: <:<[C[A],Iterable[A]])java.lang.Object{def bar: Int}
scala> List(1) bar
res0: Int = 0
или (учитывая, что вы не используете A):
scala> implicit def view[C](xs: C)(implicit ev: C <:< Iterable[_]) =
new { def bar = 0 }
scala> List(1) bar
res1: Int = 0