lambda_call_once

作为局部静态变量只初始化一次

lambda函数可以作为局部静态变量,而局部静态变量只会初始化一次,因此该lammbda函数只会执行一次,因而具有 call_once 的语义。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

#include <iostream>

void func() {
static auto init = []() {
std::cout << "only init once" << std::endl;
return true;
}();
}

int main() {
for (int i = 0; i < 10;i++) {
std::cout << "i=" << i << std::endl;
func();
}
return 0;
}


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!