【问题标题】:KDevelop semantic analyser getting crazy with std::variant. How to deal with it?KDevelop 语义分析器对 std::variant 越来越疯狂。如何处理?
【发布时间】:2021-04-25 21:33:37
【问题描述】:

在使用 KDevelop 时,我遇到了一些语义分析器变得疯狂的代码:它主要认为完整的标头在语义上是错误的,到处都是丑陋的红色突出显示。

我最大限度地简化了代码,结果如下:

万一,为了测试MyClass.hpp

#pragma once

#include <memory>
#include <variant>

template <typename Real, typename Index>
using Io = std::variant<Real, Index>;


template <typename Real, typename Index>
struct MyClass
{
    std::shared_ptr<Io<Real, Index>> ioPtr;
};

我可以构建这段代码(只需在另一个文件中添加一个主函数),因此将其视为有效代码。

KDevelop 版本是当前的 Debian 版本:5.3.1(不幸的是不是最新版本)

问题:

为什么会这样? 我可以做些什么来避免这种情况吗? (不改代码)

【问题讨论】:

    标签: c++ kdevelop


    【解决方案1】:

    在 KDevelop 中,您需要设置解析器语言版本。这是在项目 -> 打开配置 -> 语言支持 -> C++ 解析器中完成的。然后您就可以选择 C++17 作为解析器的语言版本。

    【讨论】:

    • 这是正确的,但我发现自己有时也会在 Clang 和 GCC 之间进行转换以使其正常工作。
    猜你喜欢
    • 2022-11-12
    • 2018-06-16
    • 2017-02-26
    • 2016-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    相关资源
    最近更新 更多