Definicje szablonów poza treścią klasy

Czy to jest w porządku. zdefiniować wirtualną funkcję szablonu klasy poza jego ciałem? Funkcji wirtualnej nie można wstawić, ale aby uniknąć wielu definicji w jednostkach kompilacji, zostaną one oznaczoneinline (zakładając, że nagłówki szablonów zostaną uwzględnione w wielu plikach źródłowych). Z drugiej strony kompilator może zignorowaćinline, więc to wydaje się ważne. Na przykład, czy poniższy kod jest poprawny:

<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) pozwala pominąćinline przed definicją funkcjif(T val) ale nie przed analogiczną funkcją klasy regularnej. Czy jest to tylko zachowanie gcc?

questionAnswers(3)

yourAnswerToTheQuestion