Mam następujący kodBinding tymczasowy do lwartości odniesienia
string three()
{
return "three";
}
void mutate(string& ref)
{
}
int main()
{
mutate(three());
return 0;
}
Widać jestem przechodzącej trzy() do mutate metody. Ten kod dobrze się kompiluje. Rozumiem, że tymczasowe nie mogą być przypisane do odniesień stałych. Jeśli tak, w jaki sposób program się kompiluje?
Jakieś myśli?
Edit:
Kompilatory próbowałem: VS 2008 i VS2010 Beta
Spróbuj GCC, to jest bardziej zbliżone do standardu C++. – Learner
Niestety, nie mam ze sobą GCC. –
@Appu: Po tym, jak poprawiłem twój kod pod kątem brakujących skrótów i prefiksów 'std', Comeau (http://www.comeaucomputing.com/tryitout/) mówi:' początkowa wartość odniesienia do nie-const musi być lwartością'. Powodem, dla którego VC to akceptuje jest to, że VC jest zepsuty. (Nazywają to "funkcją", ale w rzeczywistości jest to błąd). – sbi