Je le code suivantliaison temporaire à une référence lvalue
string three()
{
return "three";
}
void mutate(string& ref)
{
}
int main()
{
mutate(three());
return 0;
}
Vous pouvez voir que je passe trois()-muter méthode. Ce code se compile bien. Ma compréhension est, les temporaires ne peuvent pas être assignés à des références non-const. Si oui, comment ce programme compile-t-il?
Des pensées?
Edit:
Compilateurs essayé: VS 2008 et VS2010 Beta
Essayez GCC, il est plus proche de la norme C++. – Learner
Malheureusement, je n'ai pas GCC avec moi. –
@Appu: Après avoir corrigé le code des préfixes manquants et des préfixes 'std', Comeau (http://www.comeaucomputing.com/tryitout/) dit:' la valeur initiale de la référence à non-const doit être une lvalue'. La raison pour laquelle VC accepte cela est que VC est cassé. (Ils l'appellent une "fonctionnalité", mais en fait c'est un bug.) – sbi