Неявное разрешение (<% включено) - это время компиляции, основанное на типах, которые известны во время компиляции. </p>
В вашей процедуре единственное, что известно во время компиляции об аргументе arg, это то, что он имеет тип T
, что ни о чем. У вас может быть что-то типа
def check[T <% GenTraversable[_](arg: T) = ...
Это определенно не то же самое, однако ваша подпрограмма может быть вызвана, только если во время компиляции известно, что arg
равно GenTraversable
.
Я не знаю, где вы написали T <:< GenTraversable[_]
(вероятно, в месте, где ожидается значение). Чтобы получить неявное преобразование типов A
в B
, вы можете написать implicitly[A => B]
, но, опять-таки, произойдет сбой, если его не удастся разрешить во время компиляции. Так что здесь не поможет, с T
неограниченным родовым параметром.