我在 vscode 中使用带有 Microsoft C/C++ 扩展的 C++。我使用 msys2 中提供的 g++ 编译器:
gcc --version
gcc.exe (Rev6, Built by MSYS2 project) 13.1.0
当我在编辑器中编写此代码时,它会显示错误波浪线:
*std::ranges::find(myvec, foo1) = foo2;
~~~
no instance of overloaded function "std::ranges::__find_fn::operator()" matches the argument list C/C++(304)
mycode.cpp(122, 3): argument types are: (std::vector<const Foo *, std::allocator<const Foo *>>, const Foo *)
mycode.cpp(122, 3): object type is: const std::ranges::__find_fn
但是,当我用编译此文件时-std=c++23
,它可以正确编译,甚至没有任何警告。
我的 C/C++ 配置如下:
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"compilerPath": "C:/msys64/mingw64/bin/g++.exe",
"compilerArgs": [
"-std=c++23"
],
"intelliSenseMode": "linux-gcc-x64",
"cStandard": "c23",
"cppStandard": "c++23"
}
],
"version": 4
}
我该如何解决这些错误?