lambda式をもっと刺激的に使う

面白い話を小耳に挟んだのでメモメモ

#include <iostream>
#include <vector>
#include <functional>
using namespace std;
 
int main(){
  vector<vector<int>> array;
  vector<int> tempA = {1,2,3,4,5,6,7,8,9,10};
  array.push_back( tempA );
  vector<int> tempB = {11,12,13,14,15,16,17,18,19,20};
  array.push_back( tempB );
 
  [&]{
    for(size_t i=0; i < array.size(); ++i){
      for(size_t j=0; j < array[i].size(); ++j){
        if( array[i][j] == 17 )return;
        cout << array[i][j] << endl;
      }
    }
  }();
  return 0;
}

出力結果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

これがC++0xにおける多重ループからの脱出方法だっ!(キリッ
終了フラグ作ってbreak;break;するくらいなら俺はreturnするぞジョジョォー!!
って話。
もちろん遅(ry