I have a template base class Base
that implements a
non-type template <int I>
method called toto()
.
template<typename T>
class Base{
public:
template<int I>
void toto(){
}
};
I also have a derived class, which calls toto()
in a method use_toto()
:
template<typename T>
class Derived : public Base<T> {
public:
void use_toto(){
this->toto<1>();
}
};
To call toto()
I use the this
pointor. Because I use template classes, this is a way to avoid the so-called two-stage (or dependent) name lookup issue. If I were calling directly toto<1>()
I would get a non declared error.
The problem is that when I'm calling the method like this :
int main()
{
Derived<int> A;
A.use_toto();
}
I have this kind of error :
error: invalid operands of types ‘<unresolved overloaded function type>‘ and ‘int’ to binary ‘operator<’
Actually, in this->toto<1>();
there is a confusion between the template symbol <
and the less than operator.