【发布时间】:2012-12-29 10:03:47
【问题描述】:
在我的 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
【问题讨论】:
标签: c++ c++11 warnings clang destructor