を見て、
 「へぇ、ラムダ式を関数ポインタに入れられるんだ」
 と感心していたんですが、
 「ラムダ式の関数ポインタを返すラムダ式って書けるのかな?」
 という疑問が。
  
 #include <iostream>
#include <vector>
int main()
{
  using namespace std;
   void(*(*f)())() = []()->void (*)() { return []{cout << "hello\n";}; };
  void(*f1)() = f();
  f1();
  []()->void (*)() { return []{cout << "hello\n";};}()();
  
  vector<void(*)()> fv = {{[]{cout<<"1\n";}}, {[]{cout<<"2\n";}} };
  for(void(*a)() : fv) a();
}
 これの実行結果が
 hello
hello
1
2
 fにラムダ式の関数ポインタを返すラムダ式の関数ポインタを入れ、その実行結果をf1に。そしてf1を呼べば”hello”と表示されます。
 その下の行は同じラムダ式を直接実行。
 そして
 「vectorにだって入れられるよね?」
 と疑問に思ったから試してみたのがその下。
  
 このプログラムはgcc-4.7.0 RC (2012/3/2版)で試しました。