@soc - обычно лучше избегать подчеркивания, сильно перегруженного символа, если этого не требует спецификация.

отрим этот код:

class Foo[T : Manifest](val id: String = manifest[T].erasure.getName)

Я в основном хочу хранить идентификатор в Foo, который часто является просто именем класса.

Подкласс, который не нуждается в специальном идентификаторе, может легко использовать значение по умолчанию.

Но это даже не компилируется, сообщение об ошибке:

error: No Manifest available for T.

Есть ли другой подход, который будет работать?

РЕДАКТИРОВАТЬ:

Почему это работает, если манифест недоступен до основного конструктора?

class Foo[T: Manifest](val name: String) { 
  def this() = this(manifest[T].erasure.getName)
}

Ответы на вопрос(1)

Ваш ответ на вопрос