【发布时间】:2013-07-02 01:20:29
【问题描述】:
1) std::call_once
A a;
std::once_flag once;
void f ( ) {
call_once ( once, [ ] { a = A {....}; } );
}
2) 函数级静态
A a;
void f ( ) {
static bool b = ( [ ] { a = A {....}; } ( ), true );
}
【问题讨论】:
-
您的两个示例不等价,
call_once忽略了您传递给它的可调用对象的返回值。您可能希望在两个 lambda 表达式中分配给a。 -
是的,我忘了更改第一个。固定
标签: multithreading c++11