でもC++11はC#に比べてラムダがめんどくさい作りなのでLINQに対応しても
C#ほどには楽にはならなそう。

C#の場合
var ret = list.Where(x => x.a == 1).Select(x => new { x.a, x.b });
C++11の場合
auto ret = list.Where([](data& x){ return x.a == 1; }).Select([](data& x){ return tuple<int, string>(x.a , x.b); });