从模板函数调用模板类的成员函数
在提供的代码片段中,从另一个模板中调用成员函数模板会导致编译错误。具体来说,该代码尝试从 g
要解决此问题,必须在成员函数调用之前显式指定模板关键字。这是因为根据 C '03 标准 14.2/4,当成员模板特化的名称出现在依赖于模板参数的后缀表达式或限定 ID 之后时,成员模板名称必须以 template 关键字为前缀.
因此,下面的代码是正确的:
template void g()
{
A a;
a.template f(); // Explicitly specify 'template' keyword
}
通过添加template关键字,编译器可以正确识别f是A类模板的成员模板,并且可以成功调用A
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3