Tengo el siguiente códigoBinding temporal a una referencia lvalue
string three()
{
return "three";
}
void mutate(string& ref)
{
}
int main()
{
mutate(three());
return 0;
}
Se puede ver que estoy pasando tres() a método mutan. Este código compila bien. Según entiendo, los temporales no se pueden asignar a referencias no const. En caso afirmativo, ¿cómo se está compilando este programa?
¿Alguna idea?
Editar:
compiladores trataron: VS 2008 y VS2010 Beta
Pruebe GCC es más cercano al estándar C++. – Learner
Lamentablemente, no tengo GCC conmigo. –
@Appu: Después de haber corregido el código para los prefijos 'std' y faltantes, Comeau (http://www.comeaucomputing.com/tryitout/) dice:' el valor inicial de la referencia a non-const debe ser un valor l'. La razón por la que VC acepta esto es porque VC está roto. (Lo llaman una "característica", pero en realidad es un error). – sbi