https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65512

            Bug ID: 65512
           Summary: Inconsistent report of uninitialized members
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: blocker
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: developm...@faf-ltd.com

#include <atomic>

typedef struct
{
    char            sDateTime [20];
    std::atomic<bool>    bReadyToFlush;
} LogEntries;

typedef struct
{
    LogEntries        leLogEntries [1] {};
} LogThreads;

Compiling with g++ -std=c++11 gcc-warning-bug.cpp -Wall -Wextra -Werror
-fno-strict-aliasing -fwrapv -fno-aggressive-loop-optimizations -c

Compiler error:
gcc-warning-bug.cpp:11:34: error: missing initializer for member
‘LogEntries::sDateTime’ [-Werror=missing-field-initializers]
  LogEntries    leLogEntries [1] {};
                                  ^
gcc-warning-bug.cpp:11:34: error: missing initializer for member
‘LogEntries::bReadyToFlush’ [-Werror=missing-field-initializers]
cc1plus: all warnings being treated as error


I consider it as a bug because one of these following steps does not produce
the error message:
1) comment the line     std::atomic<bool>    bReadyToFlush;
2) Add {} to     char sDateTime [20];

Reply via email to