Hola.
Puedes declarar métodos virtuales como inline ya que inline es una sugerencia para el compilador, es decir, no está obligado a hacer caso a la orden.
Por ejemplo, si en algún momento usas la dirección de memoria de la función el compilador no la tratará como inline. O bien, si el compilador detecta que el código de la función inline es considerablemente mayor que el que sería utilizado para realizar una auténtica llamada a una función también sería ignorada la declaración inline (esto depende de cómo se haya configurado la optimización del compilador).
Por esto, cuando declaras un método virtual como inline el compilador simplemente ignora la palabra inline.
Espero que esto te haya aclarado el comportamiento de tu compilador.
Un saludo.
Ruben3d