La coincidencia de patrones Scala en tipo genérico con TypeTag genera una advertencia mientras que ClassTag no?

Tengo dos métodos muy similares. La única diferencia es el uso deClassTag yTypeTag:

def matchClass[A: ClassTag](v: Any) =
    v match {
        case a: A => "it's A"
        case _ => "not A"
    }

def matchType[A: TypeTag](v: Any) = ... // same code as matchClass

Se mostrará una advertencia de compilación paramatchType, pero no paramatchClass:
abstract type pattern A is unchecked since it is eliminated by erasure case a: A

¿Por qué hay una advertencia? ¿Por qué se muestra solo paraTypeTag y noClassTag?

Respuestas a la pregunta(1)

Su respuesta a la pregunta