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

使用BetterEnums初始化vector时触发MSVC警告C26483的问题

MSVC代码分析警告C26483:枚举类列表初始化vector时触发误报

我在用BetterEnums库实现枚举反射,这个库通过宏和模板把常规枚举封装成类。但运行MSVC内置代码分析时,所有用列表初始化该枚举类型std::vector的位置都会触发警告C26483:Value X超出变量allotemp.XX的边界(0,0),仅使用在数组边界内的常量表达式索引数组(bounds.2),列表里有多少项就会触发多少次警告。

触发警告的示例代码

BETTER_ENUM( MyEnum, int8_t,
    A,
    B,
    C
)

std::vector<MyEnum> myList = { MyEnum::A, MyEnum::B };

简化复现代码

通过预处理简化后,以下类也能复现该问题:

class  MyEnum
{
public:
    enum _enumerated : int8_t
    {
        A,
        B,
        C
    };
    constexpr MyEnum( _enumerated value ) : _value( value ) {}
    int8_t _value;
public:
    MyEnum() = default;
};

std::vector<MyEnum> myList = { MyEnum::A, MyEnum::B };

开发环境

  • Microsoft Visual Studio Community 2019
  • 版本16.11.26
  • 工具集v142
  • 编译标准C++17

补充:只有在列表初始化vector时会出现这个警告,其他使用枚举的场景都正常。我知道这个工具存在部分误报,但这次不清楚警告里的索引操作发生在何处,想找到原因或解决办法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 19:02:47