首页 > 解决方案 > cppcheck:使用/typedef 的语法错误

问题描述

我的 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声明,错误就会消失。

我想知道这是否是正常行为cppcheckusing 声明没有被直接使用。(这是一个using重新定义 int 的简化示例)。

如果需要一些上下文:在我的应用程序中,using定义了一个访问者的特化OnlyArithmetic,如下所示:using visitor = OnlyArithmetic<inferior>使用元编程技术过滤非算术类型,然后我在劣质::访问者() 上调用 std::visit。我使用这个技巧不重复我需要的所有结构的过滤部分(下级,上级,...)。

[编辑] 使用 cppcheck 1.88

标签: c++cppcheck

解决方案


这个问题是在 Cppcheck 1.86 中引入的,并在 1.89 版中得到修复。


推荐阅读