Контекст и границы просмотра добавляют неявные параметры. Так что если вы напишите:
def f[T : Manifest](l: List[T])(implicit ord: Ordering[T])
На самом деле вместо одного передаются два неявных параметра. Разрешение такого синтаксиса, безусловно, приведет к некоторой путанице в будущем. Поскольку неявное использование параметров становится все более распространенным, из-за классов типов полезно сделать что-то подобное, описанное выше.