У меня есть следующий код
string three()
{
return "three";
}
void mutate(string& ref)
{
}
int main()
{
mutate(three());
return 0;
}
Как видите, я передаю three () методу mutate. Этот код хорошо компилируется. Насколько я понимаю, временные объекты не могут быть назначены неконстантным ссылкам. Если да, то как компилируется эта программа?
Есть предположения?
Изменить:
Компиляторы попробовали: VS 2008 и VS2010 Beta
std
, Comeau (comeaucomputing.com/tryitout) говорит:initial value of reference to non-const must be an lvalue
. Причина, по которой VC принимает это, состоит в том, что VC не работает. (Они называют это функцией, но на самом деле это ошибка.) - person sbi   schedule 28.08.2009