Nuevos bucles ‘for’ basados en ‘range’ gracias a C++11

Una de las ventajas del nuevo C++11 son los bucles. Sólo hay que comprobar con este ejemplo la simplicidad de esta nueva versión del lenguaje:

#include 
#include 

int main(int argc, char *argv[])
{
    std::vector v = {0, 1, 2, 3, 4, 5};

    for (int i : v) // acceso por valor.
        std::cout << i << ' ';

    std::cout << std::endl;

    for (auto i : v) // acceso por valor usando 'auto'
        std::cout << i << ' ';

    std::cout << std::endl;

    for (int &i : v) // acceso por referencia (puedes usar 'const')
        std::cout << i << ' ';

    std::cout << std::endl;
}

Recuerda compilar de la siguiente manera:

g++ nombre_fichero.cpp -std=c++11

Hay muchas formas de hacer bucles en C++11, ¿quieres compartir alguno en especial?