You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio 2022设置/std:c++20仍不支持C++20特性问题

问题解决:C++20 auto函数参数编译错误

问题原因

你代码里的auto f(auto& x, auto& y)是C++20引入的函数模板简写语法,等价于:

template<typename T, typename U>
auto f(T& x, U& y)
{
    std::cout << x << y << "\n";
}

报错说明你的项目实际未正确启用C++20标准,或Visual Studio配置存在遗漏。

解决步骤

1. 确认配置覆盖所有构建变体

  • 右键项目选择「属性」,打开项目配置面板
  • 进入配置属性 -> C/C++ -> 语言,确保所有配置(Debug/Release)和所有平台(x86/x64等)的C++语言标准都设置为ISO C++20标准 (/std:c++20)
  • 点击「应用」后重新编译

2. 启用完整C++20特性支持(针对VS2022早期版本)

部分VS2022早期版本需额外启用/Zc:auto选项以支持auto模板参数:

  • 在项目属性的配置属性 -> C/C++ -> 命令行中,将/Zc:auto添加到「附加选项」
  • 点击「应用」后重新编译

3. 替代方案:显式编写模板

若上述配置调整后仍有问题,可使用C++11及以上兼容的显式模板写法替代简写,功能完全一致:

#include<iostream>
#include<ranges>
#include<string>

template<typename T, typename U>
auto f(T& x, U& y)
{
    std::cout << x << y << "\n";
}

struct s
{
    int x;
    std::string y;
};

int main()
{
    std::cout << "Hello World" << "\n";
}

验证

修改配置或代码后重新编译:

  • 简写语法编译通过,说明C++20配置已生效
  • 显式模板写法可在C++11及以上标准环境正常编译

内容的提问来源于stack exchange,提问作者Robert Shepherd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 20:50:53