C ++ 11 авто и возвращаемые функции
Я знаю разницу междуauto
, auto&
, const auto
а такжеconst auto&
(например, в «для каждого» цикла), но меня удивило одно:
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
}
Так может кто-нибудь сказать мне, когда типx
в выраженииauto x = fun();
не будет того же типа, что и тип возвращаемого значенияfun()
?