Definiciones de plantillas fuera del cuerpo de la clase.

Está bien. ¿Para definir la función virtual de la plantilla de clase fuera de su cuerpo? La función virtual no puede estar en línea, pero para evitar múltiples definiciones en las unidades de compilación se deben marcarinline (Suponiendo que los encabezados de la plantilla se incluirán en varios archivos de origen). Por otro lado el compilador es libre de ignorar.inline, así que esto parece válido. Por un ejemplo, es correcto el siguiente código:

<code>template <typename T>
class C
{
public:
    virtual void f(T val);
};

template <typename T>
inline
void C<T>::f(T val)
{
  //definition
}
</code>

?

BTW gcc (3.4.2) permite omitirinline antes de definición de funciónf(T val) Pero no antes de la función análoga de la clase regular. ¿Es solo el comportamiento de gcc?

Respuestas a la pregunta(3)

Su respuesta a la pregunta