while sentencia for ejemplos dev ciclos ciclo bucle c++ c++11 standards

sentencia - ¿Soportará C++ 17 el For Loop basado en rango más simple?



sentencia for en c (3)

Desde C ++ 11, podemos escribir:

vector<int> v{1, 2, 3, 4}; for (auto x : v) { cout << x << endl; }

Según Essentials of Modern C ++ Style , el siguiente código pronto también será legal en C ++:

vector<int> v{1, 2, 3, 4}; for (x : v) { cout << x << endl; }

¿Estará disponible esta característica en C ++ 17 o C ++ 20?


Actualizar

GCC 5.1 permite esta sintaxis con -std = c ++ 1z.
Esto ya no está permitido desde GCC 6.1.

Así que esta respuesta no parece ser correcta.

El compilador de Ideone compila exitosamente dicho código bajo C ++ 14:

ideone.com/KONqTW

#include <iostream> #include <vector> using namespace std; int main() { vector<int> v {1, 2, 3, 4}; for (x : v) cout << x << endl; return 0; }



No. Esto fue asesinado por el comité hace más de dos años , principalmente debido a las preocupaciones sobre la posible confusión causada por el seguimiento:

std::vector<int> v = { 1, 2, 3, 4 }; int x = 0; for(x : v) {} // this declares a new x, and doesn''t use x from the line above assert(x == 0); // holds

Las objeciones surgieron tan tarde en el proceso que tanto Clang como GCC ya habían implementado la función en el momento en que fue rechazada por el comité completo. Las implementaciones finalmente fueron retiradas: Clang GCC