Как бороться с предупреждением о выходе из деструктора в 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