Jak radzić sobie z ostrzeżeniem „destruktor czasu wyjścia” w clang?
W moim kodzie C ++ 11 dostaję ostrzeżenie o klanie „Deklaracja wymaga destruktora czasu wyjścia” w następującym przypadku:
static const std::map<int, const someStruct> mymap = {
{1, {
"A",
"B",
"C"
}},
{2, {
"D",
"E",
"F"
}}
};
O ile rozumiem, Google „destruktor czasu wyjścia” jest wymagany do zniszczenia main () i statyki w deterministyczny sposób, aby zapobiec awariom przy wyjściu z powodu „już wydanych zmiennych”. Czy to prawda? Czy ktoś może to lepiej wyjaśnić?
Plus: Co mogę z tym zrobić (nie chcę wyłączyć ostrzeżenia)? Powyższy kod jest używany tylko w kontekście jednego wątku.
Wygląda na to, że Chromium zajmuje się tymi sprawami; czy byłby to również właściwy sposób na mój przypadek?
#define CR_DEFINE_STATIC_LOCAL(type, name, arguments) \
static type& name = *new type arguments