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

如何在C++20中使用std::regular/std::totally_ordered?报错求助

问题原因与解决办法

核心原因

std::regular和std::totally_ordered是C++20标准引入的概念特性,如果编译器未启用C++20或更高版本标准,即便包含了<concepts>头文件,也无法识别这些命名空间内的类型。

解决步骤

  1. 确认编译器版本支持C++20
    不同编译器的最低支持版本要求:

    • GCC:版本10及以上
    • Clang:版本11及以上
    • MSVC:Visual Studio 2019 16.3及以上
      可通过终端执行g++ --version/clang++ --version,或在VS中查看项目编译器版本确认。
  2. 启用C++20编译标准

    • GCC/Clang编译时,需添加选项-std=c++20(早期版本可用-std=c++2a作为别名),示例命令:
      g++ your_code.cpp -std=c++20 -o output
      
    • Visual Studio中:
      打开项目属性 → 进入「C/C++」→「语言」→ 将「C标准」设置为「ISO C20标准(/std:c++20)」或更高版本。
  3. 检查代码语法正确性
    模板声明需使用尖括号<>而非圆括号(),正确写法示例:

    #include <concepts>
    
    template <std::regular N, std::regular E>
    class YourClass {
        // 类定义
    };
    

额外提示

部分旧版本编译器可能需要显式添加-fconcepts选项(如GCC 9及以下),但启用C++20标准后,现代编译器默认已开启概念支持。

内容的提问来源于stack exchange,提问作者Dawn LIN

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 15:18:14