Is this (auto && elem : v) syntax simple C++? or should I add more options to the compiler : I tried to compile the solution proposed here http://stackoverflow.com/a/29422628/6019417 , but ran into an error. 

I did not knew it was possible to avoid iterators like that in `C++` with the use  of this `(auto && elem : v)`

Or is it a little more than `C++`?

b.cpp
----
    #include <iostream>
    #include <vector>
    #include <utility>
    #include <algorithm>
    #include <string>
    #include <set>

    int main()
    {
      std::vector<std::pair<std::string, std::string>> v
      {   {"handgun", "bullets"},
          {"turret", "bullets"}};

      std::cout << "Initially: " << std::endl << std::endl;
      for (auto && elem : v)
        std::cout << elem.first << " " << elem.second << std::endl;

      return 0;
    }

Compilation
----

    $ cc b.cpp  -std=c++0x  -o myprog

Errors
----

> b.cpp: In function ‘int main()’: <br>
> b.cpp:15: error: expected initializer before ‘:’ token <br>
> ...


Appreciate your help.