Confusão no que diz respeito ao propósito / comportamento do retorno -Waggregate?

Enquanto olha para oOpções de aviso do GCC, Me depareiRetorno -Waggregate.

Retorno -Waggregate
Avisa se quaisquer funções que retornam estruturas ou uniões são definidas ou chamadas. (Nos idiomas em que você pode retornar um array, isso também elicia um aviso).

pequeno exemplo que provoca o aviso:

class foo{};
foo f(void){return foo{};}
int main(){}

$ g ++ -std = c ++ 0x -Waggregate-return -o principal main.cpp
main.cpp: Na função "foo f ()":
main.cpp: 2: 5: warning: function retorna um agregado [-Waggregate-return]

outro pequeno exemplo que não elicia o aviso:

#include <string>
std::string f(void){return "test";}
int main(){}

Qual é o benefício obtido com o uso do retorno -Waggregate?
Por que alguém iria querer ser avisado sobre isso?
Além disso, não é std :: string uma classe? - por que não me avisou sobre o 'agregado retornado' no segundo exemplo?

questionAnswers(2)

yourAnswerToTheQuestion