C ++ 11 tipos de retorno automáticos e de função
Eu sei da diferença entreauto
, auto&
, const auto
econst auto&
(por exemplo, em um loop "para cada"), mas uma coisa que me surpreendeu é:
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
}
Então alguém pode me dizer quando o tipo dex
na expressãoauto x = fun();
não será o mesmo tipo que o tipo do valor de retorno dofun()
?