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

时间:2018-11-27 13:32:07

标签: c++

我有下面的小代码示例:

attr(data-label)

这给了我以下错误信息

std::function<bool()> isSet;

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

std::function<bool()> isSet {
    return check();
}

任何人都可以解释为什么以及如何修复它吗?

2 个答案:

答案 0 :(得分:5)

初始化std::function时,只需为其提供要使用的功能即可。看起来像

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

std::function<bool()> isSet { check };

您几乎要做的是制作一个lambda,您可以这样做,但是语法是

std::function<bool()> isSet { [](){ return check(); } };

请注意,check返回的未初始化变量是未定义的行为:Why is returning a non-initialized value considered undefined behavior?

答案 1 :(得分:4)

std::function<bool()> isSet { check }; // Hold a pointer to check 是一个常规的旧对象,而不是一个函数。您应该使用它可以容纳的函子来初始化它,而不提供要执行的功能块。

只需修复初始化

Country Region City Product Sales Val
Europe Italy Milan Ring 100 10 
Europe Italy Milan Book 300 5 
Europe Italy Milan Phone 1500 10 
Europe Italy Milan Car 200 5 
Europe Italy Milan Ring 100 10 
Europe Italy Milan Pen 8200 5