Сопоставление с шаблоном на основе ClassTag не выполняется для примитивов

Я думал, что следующее будет наиболее краткой и правильной формой для сбора элементов коллекции, которые удовлетворяют данному типу:

def typeOnly[A](seq: Seq[Any])(implicit tag: reflect.ClassTag[A]): Seq[A] = 
  seq.collect {
    case tag(t) => t
  }

Но это работает только дляAnyRef типы, а не примитивы:

typeOnly[String](List(1, 2.3, "foo"))  // ok. List(foo)
typeOnly[Double](List(1, 2.3, "foo"))  // fail. List()

Очевидно прямая форма работает:

List(1, 2.3, "foo") collect { case d: Double => d }  // ok. List(2.3)

Таким образом, должен быть (простой!) Способ исправить вышеуказанный метод.

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

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