Определения шаблонов вне тела класса
Это нормально. определить виртуальную функцию шаблона класса вне его тела? Виртуальная функция не может быть встроенной, но во избежание множественных определений в единицах компиляции они должны быть помеченыinline
(при условии, что заголовки шаблона будут включены в несколько исходных файлов). С другой стороны, компилятор может игнорироватьinline
так что это кажется действительным. Например, правильный ли приведенный ниже код:
<code>template <typename T> class C { public: virtual void f(T val); }; template <typename T> inline void C<T>::f(T val) { //definition } </code>
?
Кстати, gcc (3.4.2) позволяет опуститьinline
до определения функцииf(T val)
но не перед аналогичной функцией регулярного класса. Это только поведение gcc?