Lassen Sie uns sagen, dass ich die Funktion haben,Kann ein C++ - Compiler RVO für einen konstanten Rückgabewert ausführen?
#include <string>
std::string const foo()
{
std::string s = "bar";
return s;
}
int main()
{
std::string t = foo();
}
Kann ein Compiler ausführen (benannt) return-Wert-Optimierung für t
, obwohl die Arten von s
und t
sind beide verschieden von der Rückgabetyp foo
aufgrund der const
-Nessunterschied?
(Lautet die Antwort anders für C++ 03 und C++ 11 dann bin ich auf jeden Fall daran interessiert, die C++ 03 Antwort zu wissen.)
Warum fügen Sie die Ergebnisse Ihrer Experimente nicht mit mindestens einem Compiler ein? –
@MarcGlisse: Nun, Visual C++ 2008 hat es weg optimiert, aber ich bin mir nicht sicher, ob der Standard es tatsächlich erlaubt oder nicht. – Mehrdad