Quelqu'un peut-il me dire ce que cette distribution a pour effet (en plus de mettre happyNumber à 1337), le cas échéant, et si elle n'a aucun autre effet, comment puis-je écrire du code comme ça ??? Est-ce un bug de compilateur, ou une "fonctionnalité cachée" de C++?Qu'est-ce qui se passe avec static_cast avec plusieurs arguments?
int happyNumber = static_cast<int>(123.456, TRUE, "WTF" , false , "IS" , NULL , "GOING" , 0xff , "ON???" , 1337);
J'ai été surpris que cela compilerait du tout. Je l'ai trouvé à travers un bug où j'ai accidentellement mis le deuxième paramètre à quelque chose qui devait aller dans un appel de fonction de l'expression en cours de distribution. Cela a entraîné un bogue méchant où l'objet a été moulé à partir du deuxième paramètre, appelant la fonction avec un seul argument. Il a compilé ... Et n'a pas boom de départ ...
J'utilise Microsoft Visual C++ 2008.
C'est parfaitement légitime, et il n'y a pas de bug. – Anonymous
Ah, oui vous avez raison. C'était tellement confus à moi alors que je * savais * que ça devait être un bug de compilateur - ce qui n'était pas le cas :) Je n'ai jamais rencontré l'opérateur virgule avant. – Statement