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?