【初心者歓迎】C/C++室 Ver.12【環境依存OK】

このエントリーをはてなブックマークに追加
400デフォルトの名無しさん
>>397
その理由が問題にしているのはこれだろう。
3.6.2/3 から引用。
"If the initialization is deferred to some point in time after the first statement of main,
 it shall occur before the first use of any function or object defined in the same translation unit as the object to be initialized."

簡単に訳すと、
「初期化がmainの最初の文よりも後に遅らされるとすれば、
 同じ翻訳単位で定義されているどの関数、オブジェクトの
 最初の使用よりも前で無ければならない。」
(最後の"as the object to be initialized"がよくわからない)

397の意訳では、
「関数、オブジェクトの使用」を「non-inline関数の呼び出し」に限ってしまっているのが、
規格の意図とは違うと言えるだろう。
401デフォルトの名無しさん:04/12/06 02:31:40
>>400
なるほど… 原文では

 Static data members are guaranteed to be initialized
before the first call to any non-inline function within
the same source file as the static data's definition.

となってたもんで。