boost::lambda 可以递归使用吗?
这不编译:
using namespace boost::lambda;
auto factorial = (_1 == 0) ? 1 : factorial(_1-1);
有建议的解决方法吗?
编辑:关于使用 C++11 lambdas:以下内容无法在 VS2012 上编译:
std::function<int(int)> factorial;
factorial = [&factorial](int p)->int { return (p == 0) ? 1 : p*factorial(p-1); };
int main(int argc, char* argv[])
{
int i = factorial(5);
return 0;
}
另一个编辑:奇怪的是,这个工作正常:
std::function<int(int)> factorial =
[&](int p)->int { return (p == 0) ? 1 : p*factorial(p-1); };
int main(int argc, char* argv[])
{
int i = factorial(5);
return 0;
}