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

编译含std::variant的C++代码时遭遇ISO C++语法错误

解决编译错误的方案

错误原因分析

编译错误的核心原因是代码中使用了std::string但未包含对应的头文件<string>。C++标准库中std::string的定义位于<string>头文件内,编译器找不到该头文件时,无法识别std::string类型,进而触发后续的语法错误提示。

修正后的代码

#include <stdio.h>
#include <string>  // 新增:包含std::string所需的头文件
#include <variant>

int main()
{   
    enum class TokenType {
        FOO,
        BAR,
    };
    
    using ConstTokenValue = const std::variant<std::string, int>;
    using ConstTokenType = const TokenType;
    
    return 0;
}

额外说明

  • 关于using ConstTokenValue = const std::variant<std::string, int>:这种写法是合法的,const修饰的是整个std::variant类型,最终得到的是不可修改的std::variant类型别名。
  • 原代码中的ConstTokenType声明本身没有问题,错误完全由缺少<string>头文件引发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.09 15:12:01