Que serait “std :;” faire en c ++?

Je modifiais récemment un code et trouvais un bug préexistant sur une ligne dans une fonction:

std:;ssortingng x = y; 

Ce code comstack toujours et a fonctionné comme prévu.

La définition de chaîne fonctionne car ce fichier using namespace std; , donc le std:: était inutile en premier lieu.

La question est, pourquoi std:; comstackr et que fait-il, le cas échéant?

std: un label utilisable comme cible pour goto .

Comme l’a souligné @Adam Rosenfield dans un commentaire, il s’agit d’un nom légal.

C ++ 03 §6.1 / 1:

Les étiquettes ont leur propre espace de nom et n’interfèrent pas avec les autres identificateurs.

C’est une étiquette, suivie d’une instruction vide, suivie de la déclaration d’une chaîne x .

C’est une étiquette qui est suivie par la chaîne

 (expression)std: (end of expression); (another expression)ssortingng x = y; 

Le compilateur vous dit ce qui se passe:

 #include  using namespace std; int main() { std:;cout << "Hello!" << std::endl; } 

Gcc et clang donnent tous deux un avertissement clair:

 std.cpp:4:3: warning: unused label 'std' [-Wunused-label] std:;cout << "Hello!" << std::endl; ^~~~ 1 warning generated. 

Ce qu'il faut retenir de cette histoire: comstackz toujours votre code avec les avertissements activés (par exemple, -Wall ).