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)

Reply via email to