Fix {vector,list,set} comprehension so that it can use lambda

List comprehension for C++!!! (not filter yet though)

Here's an example

```C++
std::vector<int> ivec = {1,2,3,4};
auto ovec = vector_comp(ivec, [](int x) { return x + 1; });
// ovec == {2,3,4,5}
```