C ++ 11 Auto- und Funktionsrückgabetypen
Ich kenne den Unterschied zwischenauto
, auto&
, const auto
undconst auto&
(zum Beispiel in einer "für jede" Schleife), aber eine Sache, die mich überrascht hat, ist:
std::string bla;
const std::string& cf()
{
return bla;
}
int main (int argc, char *argv[])
{
auto s1=cf();
const std::string& s2=cf();
s1+="XXX"; // not an error
s2+="YYY"; //error as expected
}
Kann mir also jemand sagen, wann die Art vonx
im Ausdruckauto x = fun();
entspricht nicht dem Typ des Rückgabewerts vonfun()
?