以下代码演示了该问题:
class Printer
{
public:
template<int i = 2>
void print() { cout << i; }
};
template<typename T>
class Base
{
protected:
Printer printer;
};
template<typename T>
class Derived : public Base<T>
{
public:
void foo()
{
this->printer.print<5>(); // the error happens here
}
};
GCC的错误说“类型(...)的无效操作数到二进制'运算符&lt;'”。 出于这个原因,我认为这是一个解析问题,我尝试过使用模板关键字,但到目前为止无济于事。
当我使用默认模板参数并以下列方式调用打印机对象的功能时,一切都很好。
this->printer.print();