読者です 読者をやめる 読者になる 読者になる

cppcheckのバグ

c++

cppcheck-1.72で確認。

// hoge.cpp
class Base {
};
template<typename T>
class Hoge<T[]> final : public Base {
};
void func() {
    int a[2];
    a[5] = 0;
}
$ cppcheck hoge.cpp
Checking hoge.cpp...

Hogeのfinal消すか継承を消すかT[]をTにするとちゃんと動く

$ cppcheck hoge.cpp
Checking hoge.cpp...
[hoge.cpp:15]: (error) Array 'a[2]' accessed at index 5, which is out of bounds.