Qt Creator clang 代码模型“无法解析包含的文件”警告和派生模板类中的错误

Seb*_*n.M 5 qt qt-creator c++17

我在 Qt Creator 中使用 clang 代码模型。它总是工作得很好,包括我重写从模板基类派生的类中的方法以及使用 C++17 功能时的情况。然后我切换到 Qt Creator 4.5,突然收到错误“只有虚拟成员函数可以标记为‘覆盖’”,即使代码没有改变。

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

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

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

这是我的代码模型配置:

-Weverything -Wno-c++98-compat -Wno-c++98-compat-迂腐 -Wno-unused-macros -Wno-newline-eof -Wno-exit-time-destructors -Wno-global-constructors -Wno -gnu-zero-variadic-macro-arguments -Wno-documentation -Wno-shadow -Wno-missing-prototypes -Wno-c++11-extensions -std=c++1z

我尝试了使用和不使用设置std,但这并没有改变任何东西。

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

#pragma once

#include <optional>

class Test {
public:
    void bar() {
        std::optional<int> x;
    }
};
Run Code Online (Sandbox Code Playgroud)

有什么线索可能发生了变化或者我可能缺少哪些设置吗?

Seb*_*n.M 0

这似乎是 Qt Creator 的问题。它已在 4.6 版本中得到解决,该版本使用较新版本的 clang。