我在Qt Creator中使用了clang代码模型。它总是可以正常工作,包括当我使用从模板基类派生的类中的方法并且使用C ++ 17功能时覆盖该方法的情况。然后,我切换到Qt Creator 4.5,突然间我得到了错误“即使没有更改代码,也只能将虚拟成员函数标记为'override'”。

现在,我尝试返回Qt Creator 4.4并删除所有设置,但是仍然相同。

最重要的是,当我打开一个新文件时,收到警告“代码模型无法解析包含的文件,例如,这可能会导致缓慢或不正确的代码完成和突出显示。type_traits:3083:7:错误:预期为'('用于函数样式的类型转换或类型构造”,并且出现错误“错误:名称空间“ std”中没有名为“可选”的类型。

这仅影响代码模型,即。 Qt Creator在IDE中向我显示的警告和错误。编译仍然可以正常工作。

这是我对代码模型的配置:


-一切-Wno-c ++ 98-compat -Wno-c ++ 98-compat-pedantic -Wno-未使用的宏-Wno-newline-eof -Wno-exit-time-destructors -Wno-global-constructors -Wno -gnu零变量宏参数-Wno文档-Wno阴影-Wno缺少原型-Wno-c ++ 11扩展-std = c ++ 1z


我在没有设置std的情况下进行了尝试,但这并没有改变任何内容。

这是导致“错误:使用未声明的标识符'std'”,“错误:预期的'('用于函数样式转换或类型构造”和“错误:使用未声明的标识符'x'的最小示例”:

#pragma once

#include <optional>

class Test {
public:
    void bar() {
        std::optional<int> x;
    }
};


有什么线索可能会改变或我可能缺少哪些设置?

最佳答案

这似乎是Qt Creator的问题。 4.6版已解决此问题,该版本使用了较新版本的clang。

10-05 19:27