c++ - 递归 boolean lambda C++

标签 c++ c++11 recursion lambda boolean

出于某种原因,这个 lambda 语句不想编译:

bool DepthFirstSearch = [](Graph *g, bool *ch, stack<int> &S, int v, int w) -> bool
{
 //Here is recursive DFS code
};

错误:不存在从“lambda[]bool()->bool”到 bool 的合适转换函数

我的问题是为什么?

最佳答案

lambda 的类型不是bool。您可以使用 auto 来完成这项工作

auto DepthFirstSearch = [](Graph *g, bool *ch, stack<int> &S, int v, int w) -> bool { ... }

或使用std::function 明确指定返回类型,但那样会很麻烦。参见 http://en.cppreference.com/w/cpp/utility/functional/function .

通常只使用 auto 会更容易,否则每次更改 lambda 的参数时都必须更改变量的类型。

关于c++ - 递归 boolean lambda C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27025406/

相关文章:

c++ - 与 C++11 `enum class` 的 ABI 兼容性保留

list - Simply Scheme Lisp 中的子集/子序列递归过程

c++ - 在 C++ 中初始化映射并将类成员变量设置为空?

c++ - asio::async_write 和 strand

c++ - 概括具有不同相似类型的 C++ 代码的方法

c++ - 在 C++ 中初始化变量的 = 和 {} 语法之间的区别

python - 在这个硬币找零问题中,我该如何做 "recursive"for 循环?

haskell - 编写此函数的正确(有效)方法是什么?

c++ - 在 c++ 中编译但在 c (gcc) 中编译时很复杂

c++ - 未定义对 clang 中函数指针的变量模板的引用,但不是 gcc