Путаница в отношении цели / поведения -Waggregate-return?

Глядя наВарианты предупреждений GCCЯ наткнулся-Waggregate обратный.

-Waggregate обратный
Предупреждать, если какие-либо функции, которые возвращают структуры или объединения, определены или вызваны. (В языках, где вы можете вернуть массив, это также вызывает предупреждение.)

Небольшой пример, который вызывает предупреждение:

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

$ g ++ -std = c ++ 0x -Waggregate-return -o main main.cpp
main.cpp: в функции ‘foo f ()’:
main.cpp: 2: 5: warning: функция возвращает агрегат [-Waggregate-return]

еще один небольшой пример, который не вызывает предупреждение:

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

Какая выгода от использования -Waggregate-return?
Почему кто-то хочет быть предупрежден об этом?
Кроме того, не является ли std :: string классом - почему я не предупредил о «возвращенном агрегате» во втором примере?

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

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