Путаница в отношении цели / поведения -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 классом - почему я не предупредил о «возвращенном агрегате» во втором примере?