【发布时间】:2014-10-19 10:58:51
【问题描述】:
这个 lambda 表达式的行为是否有一些标准库函数/类:
void some_func(int some_arg, float some_other_arg){
static int do_once = ([](){
// will be run once upon first function call but never again
return 0; // dummy return value
})();
// will always run
}
写这个感觉就像一个黑客,但除了简单地调用main中的函数之外,我想不出另一种方法,但我实际上在做什么取决于模板参数,我需要使其尽可能通用。
对于上下文:
我为每个不同的模板参数注册了一个 atexit 函数,但只注册一次:第一次调用它。
【问题讨论】:
-
也许是 std::call_once ? en.cppreference.com/w/cpp/thread/call_once
-
但是我需要静态保留
std::once_flag,这在单线程环境中并没有我已经在做的事情的优势。 -
你应该让你的评论成为答案,我会接受它