Menu

Inconsistent constVariablePointer. Part 3

2026-03-06
2026-03-06
  • Nikita Leontiev

    Nikita Leontiev - 2026-03-06

    cppcheck 2.20.0 doesn't generate constVariablePointer for the following code:

    #include <string>
    
    using std::wstring;
    
    class Object
    {
    private:
        wstring m_str;
    public:
        Object() : m_str(L"str") {}
        const wstring& get_str() const { return m_str; }
    };
    
    Object* get_object()
    {
        static Object obj;
        return &obj;
    }
    
    void func(const wchar_t*) {}
    
    int main()
    {
        Object* obj = get_object();
        func(obj->get_str().c_str());
        return 0;
    }
    

    obj can be pointer to const.
    constVariablePointer is generated with --std=c++03 arg:

    test\main.cpp:24:10: style: Variable 'obj' can be declared as pointer to const [constVariablePointer]
     Object* obj = get_object();
             ^
    

    Without "using std::wstring;", constVariablePointer is not generated:

    class Object
    {
    private:
        std::wstring m_str;
    public:
        ...
        const std::wstring& get_str() const { return m_str; }
    };
    

    After replacing std::wstring with std::string, constVariablePointer is generated regardless of --std=c++03.

     
  • CHR

    CHR - 2026-03-06

    Thanks for reporting, ticket is here: https://trac.cppcheck.net/ticket/14575

     

Log in to post a comment.

MongoDB Logo MongoDB