Boost.Lambda で再帰

melt日記 - LocalArray のコメント欄


こんなのできたんですね

#include <iostream>
#include <boost/function.hpp>
#include <boost/lambda/lambda.hpp>
#include <boost/lambda/bind.hpp>
#include <boost/lambda/if.hpp>

using namespace std;
using namespace boost;
using namespace boost::lambda;

int main()
{
    function<int(int)> fact;
    fact = if_then_else_return(_1 == 1, 1, ret<int const>(_1 * bind(constant_ref(fact), _1 - 1)));

    cout << fact(3) << endl; // 6

    return 0;
}

読めるよめる