Como lidar com o aviso “destruidor de tempo de saída” no clang?
No meu código C ++ 11 eu recebo o aviso de clang "Declaração requer um destrutor de tempo de saída" no seguinte caso:
static const std::map<int, const someStruct> mymap = {
{1, {
"A",
"B",
"C"
}},
{2, {
"D",
"E",
"F"
}}
};
Tanto quanto eu entendo Google um "destruidor de tempo de saída" é necessário para destruir main () e estática de uma forma determinista para evitar falhas na saída devido a "variáveis já lançadas". Isso esta certo? Alguém pode explicar melhor?
Plus: O que posso fazer sobre isso (não quero desativar o aviso)? O código acima é usado no contexto de apenas um thread.
Parece que esta é a maneira como o Chromium lida com esses casos; seria esse o caminho certo para o meu caso também?
#define CR_DEFINE_STATIC_LOCAL(type, name, arguments) \
static type& name = *new type arguments