I have a problem with a piece of code of the following form:
template
class Class1 {
public:
template TypeName1*
You should use the template
keyword when you are invoking a member function template and you have a dependent name, or method1
will be parsed as a member variable of c
and <
as a "less than" symbol:
c.template method1<TypeName1>();
As @DrewDormann correctly points out, the reason why the template
keyword is required is that a specialization of the Class1
class template could exist for the particular type argument provided, where method1
is defined as a member variable rather than a function template. Thus, the compiler must be explicitly instructed to parse method1
as the name of a function template if this is not the case.