Is it O.K. to define virtual function of class template outside its body? Virtual function can not be inlined, but to avoid multiple definitions in compilation units they shall be marked inline
(assuming that template headers will be included in multiple source files). On the other hand compiler is free to ignore inline
, so this seems valid. By an example, is the code below correct:
template <typename T>
class C
{
public:
virtual void f(T val);
};
template <typename T>
inline
void C<T>::f(T val)
{
//definition
}
?
BTW gcc (3.4.2) allows to omit inline
before definition of function f(T val)
but not before analogous function of regular class. Is it only gcc's behaviour?