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