可以使用boost :: lambda 递归?Boost lambda递归?
这并不编译:
using namespace boost::lambda;
auto factorial = (_1 == 0) ? 1 : factorial(_1-1);
是否有建议的解决方法?
编辑:关于使用C++ 11 lambda表达式:下面的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;
}
ANOTHER编辑:奇怪的是,这一个正常工作:
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;
}
如果您已经使用C++ 11,为什么不使用'std :: function'和一个内置的递归lambda? http://stackoverflow.com/questions/2067988/recursive-lambda-functions-in-c0x – 2013-03-01 18:47:53
boost :: lambda似乎有点稳定和灵活,然后msvc C++ 11 lambda实现... – 2013-03-01 18:53:01
什么问题您是否正在使用lambda表达式的VC++实现?我已经使用它们很多,没有看到任何问题(好吧,自SP1以来没有问题)。 – Ferruccio 2013-03-01 18:57:23