C++11中如何检查返回的std::function是否“有效”

5
我希望实现一个动态任务队列,类似于以下方式:
typedef std::function<void(void)> Job;
typedef std::function<Job(void)> JobGenerator;

// ..

JobGenerator gen = ...;
auto job = gen(); 
while (IsValidFunction(job))
{
    job();
}

我该如何实现IsValidFunctionstd::function是否有一种默认值可以检查?


我不清楚什么使其有效。你所说的存在是什么意思? - doctorlove
http://en.cppreference.com/w/cpp/utility/functional/function/operator_bool - jrok
1
也许你要找的是 while(job) 吗? - PlasmaHH
2个回答

10

好东西。我已经知道转换运算符,但是我完全忘记了它们!我认为,这个链接更好地解释了这个概念。 - Domi
小心@Domi,std :: functionbool转换存在错误:https://dev59.com/B3jZa4cB1Zd3GeqPdF-1 - Yakk - Adam Nevraumont

1
你可以通过将函数转换为bool来检查它是否具有有效的目标。无效函数将是没有目标的空函数,例如默认构造函数或nullptr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接