在看GCC的警告选项时,我遇到了-Waggregate-return.
-Waggregate-return
如果定义或调用任何返回结构或联合的函数,则发出警告.(在可以返回数组的语言中,这也会引发警告.)
引发警告的小例子:
class foo{};
foo f(void){return foo{};}
int main(){}
Run Code Online (Sandbox Code Playgroud)
$ g ++ -std = c ++ 0x -Waggregate-return -o main main.cpp
main.cpp:在函数'foo f()'中:
main.cpp:2:5:warning:函数返回一个聚合[-Waggregate-返回]
另一个不引发警告的小例子:
#include <string>
std::string f(void){return "test";}
int main(){}
Run Code Online (Sandbox Code Playgroud)
使用-Waggregate-return可以获得什么好处?
为什么有人想要对此发出警告?
另外,std :: string不是一个类吗? - 为什么我不警告第二个例子中的'返回聚合'?