Wie gehe ich mit der Warnung "Exit-Time Destructor" in Klängen um?

In meinem C ++ 11-Code erhalte ich die Warnung "Deklaration erfordert einen Exit-Time-Destruktor" in folgendem Fall:

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

Nach meinem Verständnis ist ein "Exit-Time Destructor" erforderlich, um main () und statics deterministisch zu zerstören, um Abstürze beim Beenden aufgrund von "bereits freigegebenen Variablen" zu verhindern. Ist das richtig? Kann es jemand besser erklären?

Plus: Was kann ich dagegen tun (ich möchte die Warnung nicht deaktivieren)? Der obige Code wird nur im Kontext eines Threads verwendet.

So geht Chromium mit diesen Fällen um. Wäre das auch der richtige Weg für meinen Fall?

#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)

Antworten auf die Frage(1)

Ihre Antwort auf die Frage