Vorlagendefinitionen außerhalb des Klassenkörpers

Ist es o.k. virtuelle Funktion der Klassenvorlage außerhalb ihres Körpers zu definieren? Virtuelle Funktionen können nicht eingebunden werden, sie sind jedoch zu kennzeichnen, um Mehrfachdefinitionen in Zusammenstellungseinheiten zu vermeideninline (unter der Annahme, dass Vorlagenheader in mehreren Quelldateien enthalten sind). Auf der anderen Seite ist der Compiler frei zu ignoriereninlineDas scheint also gültig zu sein. Ist der folgende Code beispielsweise korrekt?

<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) erlaubt das Weglasseninline vor der Definition der Funktionf(T val) aber nicht vor der analogen Funktion der regulären Klasse. Ist es nur das Verhalten von gcc?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage