Wie man mit "exit-time destructor" Warnung im Klang?

In meinem C++11 code, den ich bekommen die schrillen Warnung "Erklärung erfordert eine exit-time destructor" im folgenden Fall:

static const std::map<int, const someStruct> mymap = {
    {1, {
        "A",
        "B",
        "C"
    }},
    {2, {
        "D",
        "E",
        "F"
    }}
};

Soweit ich das verstanden habe Google eine "exit-time destructor" ist erforderlich, um zu zerstören, main() und Statik in einer deterministischen Weise zu verhindern, dass Abstürze beim beenden durch "bereits veröffentlicht-Variablen". Ist das richtig? Kann jemand es besser erklären?

Plus: Was kann ich dagegen tun (ich will nicht, um die Warnung zu deaktivieren)? Der obige code wird verwendet in Zusammenhang mit einem thread nur.

Sieht aus wie dies ist die Art und Weise Chrom-befasst sich mit diesen Fällen; wäre das der richtige Weg für meinen Fall auch?

#define CR_DEFINE_STATIC_LOCAL(type, name, arguments) \
  static type& name = *new type arguments

(Quelle: https://chromium.googlesource.com/chromium/src/+/32352ad08ee673a4d43e8593ce988b224f6482d3/base/basictypes.h)

Schreibe einen Kommentar