C++如何使std :: function <bool()>返回一个布尔值

lg.*_*rom -3 c++

我有以下小代码示例:

std::function<bool()> isSet;

bool check() {
   bool tmp;
   return tmp;
}

std::function<bool()> isSet {
    return check();
}
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误消息

could not convert 'isSet()' from 'bool' to 'std::function<bool()>'
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么以及如何解决它?

Nat*_*ica 5

初始化时std::function,只需给它你想要它使用的功能.那看起来像

bool check() {
   bool tmp;
   return tmp;
}

std::function<bool()> isSet { check };
Run Code Online (Sandbox Code Playgroud)

你几乎做的是制作一个lambda,你可以做,但语法就是

std::function<bool()> isSet { [](){ return check(); } };
Run Code Online (Sandbox Code Playgroud)

请注意check返回未初始化的未定义行为变量:为什么返回未初始化的值被视为未定义的行为?