| 
		
			| [C++11]ラムダ式で再帰 | 2014年12月09日21:54:59 |  | 
	| ラムダ式単独で再帰を表現できるのでサンプルコードをご紹介します。 | 
	| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 | #include <cstdio> 
#include <functional> 
int main()
{
    
    std::function<int(int)> factorial = [&factorial](int i) -> int
    {
        if( i == 1 )
        {
            return 1;
        }
        return i*factorial(i-1);
    };
    printf( "%d\n", factorial(5) );
    return 0;
} | 
	| 出力:
  120 | 
	| ラムダ式単独で再帰が表現できて非常に便利ですね!
面白い点は、自分自身をキャプチャに指定できてしまう所だと思います。
注意点は、ラムダで再帰を行う際には型解決の問題でauto変数に代入出来ないので
必ずstd::functionを経由しなければならない点です。
autoにするとコンパイルエラーになります。
auto変数についての説明はこちら
[C++11]auto変数を使おう!ただし慎重に...
ラムダ式についての説明はこちら
[C++11]ラムダ式(無名関数、匿名関数)とstd::function | 
	|  |