GCC の警告オプションを見ているときに、-Waggregate-returnに出会いました。
-Waggregate-return
構造体または共用体を返す関数が定義または呼び出された場合に警告します。(配列を返すことができる言語では、これも警告を引き出します。)
警告を引き出す小さな例:
class foo{};
foo f(void){return foo{};}
int main(){}
$ g++ -std=c++0x -Waggregate-return -o main main.cpp
main.cpp: In function 'foo f()':
main.cpp:2:5: warning: function returns an aggregate [-Waggregate-戻る]
警告を出さない別の小さな例:
#include <string>
std::string f(void){return "test";}
int main(){}
-Waggregate-return を使用することで得られるメリットは何ですか?
なぜ誰かがこれについて警告されたいのですか?
また、std::string はクラスではありませんか?- 2 番目の例で「返された集計」について警告しなかったのはなぜですか?