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()?

Ответы на вопрос(2)

Ваш ответ на вопрос