【发布时间】:2019-08-21 11:16:34
【问题描述】:
我的 cppcheck 和 using/typedef 声明存在语法错误。 我有一个包含
的结构struct inferior
{
using visitor = int;
template <typename T>
bool operator()(const T &a, const T &b) const
{
return a < b;
}
};
int main() {
return 0;
}
当我运行cppcheck file.cpp 时,输出是
[file.cpp:5]: (error) syntax error 没有进一步的输出。
如果我删除 using 声明,错误就会消失。
我想知道这是否是 cppcheck 的正常行为。 using 声明未直接使用。 (这是一个简化的示例,使用 using 重新定义 int)。
如果需要一些上下文:在我的应用程序中,using 定义了访问者 OnlyArithmetic 的特化,如下所示:using visitor = OnlyArithmetic<inferior> 使用元编程技术过滤非算术类型,然后我调用 std::visit on劣质::访客()。我使用这个技巧来避免对我需要的所有结构(下级、上级、...)重复过滤部分。
[编辑] 使用 cppcheck 1.88
【问题讨论】:
-
尝试在命令行中添加
--std=c++11,不知道cppcheck默认使用的是什么 -
快速浏览 cppcheck 的论坛表明最近出现了一个错误;还有其他关于错误语法错误的报告。如果您有最新版本,我会尝试回滚一点。
-
什么版本的cppcheck?
-
感谢您的回复,我尝试使用
--std=c++11,但行为相同。我使用的是 cppcheck 1.88(最新的自制配方)。我从源代码(1.89)构建了 cppcheck 但同样的问题但输出更多。然后我降级到 1.76.1(他们的 branches 之一)并且问题消失了