Diferencia entre las funciones miembro para una clase de plantilla definida dentro y fuera de la clase

¿Hay una diferencia entre la definición de funciones miembro para una clase de plantilla dentro de la declaración de clase y fuera?

Definido en el interior:

template <typename T>
class A
{
public:
    void method()
    {
        //...
    }
};

Definido afuera:

template <typename T>
class B
{
public:
    void method();
};

template <typename T>
void B<T>::method()
{
    //...
}

Para las clases que no son de plantilla, esta es la diferencia entre los métodos en línea y no en línea. ¿Esto también es cierto para las clases de plantilla?

El valor predeterminado para la mayoría de mis colegas es proporcionar definiciones dentro de la clase, pero siempre he preferido definiciones fuera de la clase. ¿Mi preferencia está justificada?

Edición: suponga que todo el código anterior se proporciona en el archivo de encabezado de la clase.

Respuestas a la pregunta(3)

Su respuesta a la pregunta