SLS задает синтаксис параметра параметра типа как
TypeParamClause ::= ‘[’ VariantTypeParam {‘,’ VariantTypeParam} ‘]’
FunTypeParamClause::= ‘[’ TypeParam {‘,’ TypeParam} ‘]’
VariantTypeParam ::= {Annotation} [‘+’ | ‘-’] TypeParam
TypeParam ::= (id | ‘_’) [TypeParamClause] [‘>:’ Type] [‘<:’ Type] {‘<%’ Type} {‘:’ Type} {‘<%’ Type} {‘<%’ Type}
, где мы видим >:
, <:
, <%
, <%
, :
как разрешенные зарезервированные имена в предложении параметра типа. Есть ли способ, которым мы могли бы использовать обобщенное ограничение типа symboli c names <:<
, =:=
в предложении параметра типа, так что
def f[T =:= 42] = ???
расширится до
def f[T](implicit ev: T =:= 42) = ???
аналогично тому, как контекстная привязка
def f[T: Numeric] = ???
расширяется до
def f[T](implicit ev: Numeric[T]) = ???