我有下面的小代码示例:
attr(data-label)
这给了我以下错误信息
std::function<bool()> isSet;
bool check() {
bool tmp;
return tmp;
}
std::function<bool()> isSet {
return check();
}
任何人都可以解释为什么以及如何修复它吗?
答案 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