Verwirrung in Bezug auf Zweck / Verhalten der -Waggregate-Rückkehr?

Beim Betrachten derGCC's WarnoptionenKam ich rüber-Waggregate-Rückkehr.

-Waggregate-Rückkehr
Warnen Sie, wenn Funktionen definiert oder aufgerufen werden, die Strukturen oder Gewerkschaften zurückgeben. (In Sprachen, in denen Sie ein Array zurückgeben können, wird auch eine Warnung ausgegeben.)

kleines Beispiel, das die Warnung auslöst:

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

$ g ++ -std = c ++ 0x -Waggregate-return -o main main.cpp
main.cpp: In der Funktion 'foo f ()':
main.cpp: 2: 5: warning: function gibt ein Aggregat zurück [-Waggregate-return]

ein weiteres kleines Beispiel, das die Warnung nicht auslöst:

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

Welchen Nutzen bringt die Verwendung von -Waggregate-return?
Warum sollte jemand darüber gewarnt werden wollen?
Ist std :: string auch keine Klasse? - Warum habe ich im zweiten Beispiel nicht vor dem zurückgegebenen Aggregat gewarnt?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage