Bogue de Visual Studio : référence non-const liée à un objet temporaire
L'extrait de code donné illustre un comportement particulier observé dans Visual Studio :
class Zebra {int x;}; Zebra goo() {Zebra z; return z;} void foo(Zebra &x) { Zebra y; x = y; foo(goo()); }
Visual Studio permet à ce code de se compiler sans erreurs, tandis que gcc génère une erreur de compilation. Ce comportement devient encore plus déroutant lorsqu'un typedef est utilisé pour représenter Zebra comme int, car Visual Studio détecte alors le problème.
Ce comportement est piloté par une ancienne extension Visual Studio. Comme indiqué dans le rapport de bogue de Microsoft, « Les objets temporaires peuvent être liés à des références non const », Visual Studio permet aux références non const d'être liées à des objets temporaires.
Cependant, cette extension peut être désactivée à l'aide du / Indicateur du compilateur Za, qui fera de l'extrait de code en question une erreur. De plus, un avertissement de niveau 4 (activé avec /W4) est disponible pour signaler ce problème.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!