devxlogo

A Member Function Template may not be Virtual

A Member Function Template may not be Virtual

A reader tried to declare a template as a virtual member function of a class. However, his compiler refused to compile the code. The reader wanted to know what he was doing wrong. The answer is simple: the ANSI/ISO Standard says (14.5.2 p 3): “A member function template shall not be virtual.” For example:

      template  struct A   {    template  virtual void f(C);   
/* error, virtual template function */ virtual void g(); // OK, g is not a template };

devx-admin

Share the Post: