27 votes

Est-ce que le c-+17 prendra en charge la plus simple gamme basée sur For Loop?

Depuis C++11, on peut écrire:

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

Selon l'essentiel de Moderne Style C++ , le code suivant va bientôt être aussi juridique en C++:

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

Sera cette fonctionnalité sera disponible en C++17 ou C++20?

57voto

T.C. Points 22510

Pas de. Cela a été tué par le comité de plus de deux ans, principalement en raison de préoccupations concernant le risque de confusion causée par l'observation:

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

Les objections est venu si tard dans le processus que les deux Clang et GCC avait déjà mis en œuvre la fonctionnalité par le temps, il a été rejeté par l'ensemble du comité. La mise en oeuvre a été finalement supprimée: Clang GCC

1voto

Qwertiy Points 6707
<blockquote> <p><strong>mettre à jour</strong></p> <p>GCC 5.1 permet cette syntaxe avec -std-c-+1z.<br>Ce n’est plus permis depuis GCC 6.1.</p> <p>Donc, cette réponse ne semble pas être correcte.</p> <p>Le compilateur D’Ideone compile avec succès ce code sous le code CMD + 14 :</p><p><a href="http://ideone.com/KONqTW" rel="nofollow noreferrer">http://ideone.com/KONqTW</a></p><pre><code></code></pre></blockquote>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X