boost :: lambda는 을 재귀 적으로 사용할 수 있습니다?람다 재귀를 부스트합니까?
이 컴파일되지 않습니다 권장 해결 방법은
using namespace boost::lambda;
auto factorial = (_1 == 0) ? 1 : factorial(_1-1);
있습니까?
편집 : C++ 11 람다를 사용하여 관련하여 다음 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'과 내장 재귀 람다를 사용하지 않을까요? http://stackoverflow.com/questions/2067988/recursive-lambda-functions-in-c0x –
boost :: lambda는 msvc C++ 11 람다 구현보다 안정적이고 유연한 것 같습니다. –
어떤 문제가 있습니까? 당신은 람다의 VC++ 구현을 경험하고 있습니까? 어떤 문제도 보지 않고 꽤 많이 사용했습니다 (어쨌든 SP1 이후로는 문제가 없습니다). – Ferruccio