C++0x ラムダ式で再帰

ネタ元:Visual C++ Team Blog - Stupid Lambda Tricks


VC++10 CTPで確認

#include <iostream>
#include <functional>

using namespace std;
using namespace std::tr1;

int main()
{
    function<int(int)> fact = [&fact](int x) {
        return x == 0 ? 1 : x * fact(x - 1);
    };

    cout << fact(3) << endl;
}


動いた−。