可以使用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