如果不是,cppcheck 越界

cppcheck out of bounds when it's not

当使用静态常量作为大小设置 class 定义中 std::array 的大小时,cppcheck 不知道数组有多大。所以当我不在的时候它认为我越界了

做一个#define 似乎解决了问题,所以这是一个学术问题。

class A
{
    A() : myArr()
    {
        myArr[0]=100;
    }
    static const int SOMEVAL = 4;

    std::array<double, SOMEVAL+1> myArr;

    int getVal() { return myArr[1]; };

}
int main(void)
{

    A myA;
    myA.getVal();

}

有什么想法吗?

这是 cppcheck 中的一个缺陷:

https://trac.cppcheck.net/ticket/9202

已在 1.89 版本中修复:

https://trac.cppcheck.net/changeset/121093658d788126d5f94792c4ea00447fdbb979/