Definições de modelo fora do corpo da classe

É O.K. definir função virtual do modelo de classe fora de seu corpo? A função virtual não pode ser embutida, mas para evitar múltiplas definições em unidades de compilação elas devem ser marcadasinline (assumindo que os cabeçalhos de modelo serão incluídos em vários arquivos de origem). Por outro lado, o compilador é livre para ignorarinline, isso parece válido. Por exemplo, o código abaixo está correto:

<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 da definição da funçãof(T val) mas não antes da função análoga da classe regular. É apenas o comportamento do gcc?

questionAnswers(3)

yourAnswerToTheQuestion