标准库函数,仅运行一次函数

Cof*_*ode 13 c++ lambda c++11 c++14

是否有一些标准库函数/类这个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
}
Run Code Online (Sandbox Code Playgroud)

写这个就像是一个黑客,但我想不出另外做这个的方式,而不仅仅是调用函数main,但我实际上做的事情取决于模板参数,我需要保持它像通用一样可能.

对于上下文:
atexit为每个不同的模板参数注册一个函数,但只注册一次:第一次调用它.

Kir*_*xas 14

也许你应该使用std::call_once找到的<mutex>.这里
如何使用它的例子