NOEMBLEM/エンブレムが設定されていません。

メールの詳細(メール表示)

件名:

Re: auto main() { ... } の型は?

差出人: "k.tsumura"さん <noctua039…>
送信日時 2013/12/02 09:12
ML.NO [cppll:14085]
本文:

zakです。

§3.6.1 p5
(snip)
If control reaches the end of main without encountering a return statement, the effect is that of executing
return 0;

とあるので、「隠れたreturn 0;が埋め込まれる」のではなく、「0が返されるようにふるまう」(std::exit(0)を呼ぶ)と解釈するのではないでしょうか。
とするなら、コンパイラの解釈として、"return文がない関数はvoidを返すものと推論する"結果として、int (*)(void)型になるのは妥当だと思います。

# 余談
§3.6.1 p2
(snip)
It shall have a return type of type int, but otherwise its type is implementation-defined. All implementations shall allow both of the following definitions of main:
int main() { /* ... */ }
and
int main(int argc, char* argv[]) { /* ... */ }

にあるとおり、int main() / int main(int, char*) 「以外の形式は実装依存」なので、auto main(){}をgcc/clangでやると怒られます。おなじくvoidを返すように推論しているようです。

このエントリーをはてなブックマークに追加
添付:

このメールは下記のメールに対する返信です:

このメールには下記のメールが返信されています:

更新順メールリスト