Подтвердить что ты не робот

Объявления экзистенциальных типов в Scala

В чем разница между следующими объявлениями экзистенциальных типов:

trait A[T <: A[T]]

1. def existentialErr(arg: A[T forSome{type T <: A[T]}]): Unit =()
2. def existentialOk(arg: A[T] forSome{type T <: A[T]}): Unit =()

Точка 1 генерирует следующую ошибку времени компиляции:

аргументы типа [T forSome { type T <: packagename.A[T] }] не соответствуют признаку. Параметр параметра типа [T <: packagename.A[T]]

Точка 2 компилируется без проблем.

Как правило, этот вопрос очень похож на следующий неотвеченный: Путаница с экзистенциальными типами в Scala

Воспроизводится на Scala 2.11.6

UPD: Трэвис Браун предоставил ответ здесь

4b9b3361