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 ignoriereninline
Das 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?