Как бороться с предупреждением о выходе из деструктора в clang?

В моем коде C ++ 11 я получаю предупреждение clang "Объявление требует деструктора времени выхода" в следующем случае:

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

Насколько я понимаю, Google "деструктор времени выхода" необходим для уничтожения main () и статики детерминированным способом, чтобы предотвратить сбои при выходе из-за "уже выпущенных переменных". Это правильно? Может кто-нибудь объяснить это лучше?

Плюс: что я могу с этим сделать (я не хочу отключать предупреждение)? Приведенный выше код используется только в контексте одного потока.

Похоже, именно так Chromium справляется с этими случаями; будет ли это правильным способом для моего случая?

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

(Источник:https://chromium.googlesource.com/chromium/src/+/32352ad08ee673a4d43e8593ce988b224f6482d3/base/basictypes.h)

Ответы на вопрос(1)

Ваш ответ на вопрос