首页 > 解决方案 > 尝试分配 std::variant 时出现 VScode C/C++ 扩展错误

问题描述

我正在使用带有Microsoft C/C++ 扩展的 vscode来分析此 C++ 代码:

#include <variant>

using namespace std;

int main() 
{
    variant<int, double> v;
    v = 12; //Marks as error 
    v = 12.0; //Marks as error
    //But compiles without errors.
}

该扩展目前将这些行标记为错误,但仍然可以毫无问题地编译和运行它们。

为了解决这个问题,tasks.json我添加了这样的参数:

...
"command": "/usr/bin/g++",
            "args": [
                "--std=c++17",
                "-pedantic-errors",
                ...
...

在扩展设置中,我明确地将 C++ 标准设置为C++17并重新启动。

但我仍然无法摆脱红色曲线。悬停时,错误显示:

没有运算符 "=" 匹配这些操作数 -- 操作数类型是:std::variant<int, double> = int

我该如何解决?

编辑:在我之前的问题中,vscode 无法编译。现在可以了,这要归功于扩展设置中的编辑。但是,我仍然无法摆脱红色曲线。

标签: c++visual-studio-code

解决方案


请参阅https://github.com/microsoft/vscode-cpptools/issues/6623

它仅在使用 clang(不是 gcc 或 cl.exe)时重现,将您的 compilerPath 更改为 g++ 可能是一种解决方法。


推荐阅读