https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116638
Bug ID: 116638 Summary: False-positive maybe-uninitizlied warning: ‘*(const std::array<int, 3>*)((char*)&<anonymous> +12)’ may be used uninitialized [-Werror=maybe-uninitialized] Product: gcc Version: 15.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: accelerator0099 at gmail dot com Target Milestone: --- Created attachment 59066 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=59066&action=edit source and output Source: M2.cpp #include <array> #include <variant> #include <vector> struct MatchTaskInfo { using GrayRange = std::pair<int, int>; using ColorRange = std::pair<std::array<int, 3>, std::array<int, 3>>; using Range = std::variant<GrayRange, ColorRange>; using Ranges = std::vector<Range>; }; class MatcherConfig { public: struct Params { MatchTaskInfo::Ranges mask_ranges; bool mask_src = false; bool mask_close = false; }; /* inline */ void set_mask_range(int lower, int upper, bool mask_src = false, bool mask_close = false); protected: Params m_params; }; void MatcherConfig::set_mask_range(int lower, int upper, bool mask_src, bool mask_close) { m_params.mask_ranges = { MatchTaskInfo::GrayRange { lower, upper } }; m_params.mask_src = mask_src; m_params.mask_close = mask_close; } Compile: g++ -std=gnu++20 -Wall -Wextra -Wpedantic -Werror -O2 -c M2.cpp Output: (see attachment)