Linux 模板类具有带模板参数的函数时出现Cppcheck语法错误

Linux 模板类具有带模板参数的函数时出现Cppcheck语法错误,linux,c++11,templates,opensuse,cppcheck,Linux,C++11,Templates,Opensuse,Cppcheck,任何人都知道我如何修复这个Cppcheck语法错误(除了“语法错误”没有更多信息),或者如果它是一个误报(可能是由于使用了选项),我查看了模板教程和文档,没有发现任何类似的用法,代码是: template<typename T> template<class Archive> // Here is the Cppcheck syntax error void MyItemContainer<T>::serialize(Archive & ar, con

任何人都知道我如何修复这个Cppcheck语法错误(除了“语法错误”没有更多信息),或者如果它是一个误报(可能是由于使用了选项),我查看了模板教程和文档,没有发现任何类似的用法,代码是:

template<typename T>
template<class Archive> // Here is the Cppcheck syntax error
void MyItemContainer<T>::serialize(Archive & ar, const unsigned int version)
{
    ....
}
模板
模板//以下是Cppcheck语法错误
void MyItemContainer::serialize(存档&ar,常量unsigned int版本)
{
....
}
我正在使用:

  • g++(SUSE Linux)8.2.1 20180831[gcc-8-branch修订版264010]
  • Cppcheck 1.82(这是openSUSE Leap 15上的最后一个可用版本),我已成功构建了1.89版本,但无法运行它,使用与1.82版本相同的参数,我有“Cppcheck:未能加载库配置文件'std.cfg'。未找到文件”错误
  • Cppcheck命令是:Cppcheck MyItemContainer.h--force--platform=unix64--enable=warning--xml version=2--verbose--error exitcode=0--std=c++11--language=c++

谢谢

这似乎是CppCheck的问题/假阳性。代码使用正确的语法定义模板化(on
T
)类的模板化(on
Archive
)成员函数。在模板签名中使用
class
typename
在语义上没有什么区别(但可能CppCheck会遇到这个问题?需要尝试一下…)

可能是前面的某些代码无效,并导致此位置出现语法错误,但这似乎不太可能


我找不到任何有用的提到“模板”这个词的地方。但是考虑到CppCheck仍在积极开发,你可以考虑建立一个小代码示例来复制这个问题并提交给他们的bug跟踪器.< /p>谢谢你的回答,我将在我的忽略列表中添加一个异常(CPPCHECK-PISSIONS列表选项)对于这一个,尝试做一个小的代码,复制这个提交给他们。注:我本想投票给你,但我的声望太低了:(我是Cppcheck的撰稿人,所以我对那里发生的事情有一点了解。特别是关于
模板
,上次已经做了很多改进和修复。所以我想这已经在更新的版本中得到了修复。如果你的代码是用g++编译的,那么Cppcheck很可能与代码有问题。我真的可以记录ommend切换到较新版本。如果您没有Trac帐户,也可以在论坛中发布:谢谢@versat,我已经按照Max Langhof的建议发布了一个讨论,如下所示: