C への変換に基づいた初期の C++ 実装では、関数呼び出しを の先頭に追加することでグローバル コンストラクターを実装していましたmain
。このような実装では、main
再度呼び出すとグローバル ctor が再実行され、大混乱が生じるため、これを行うことは単純に禁止されていました。
一方、C では の呼び出しを禁止する理由はなくmain
、伝統的に常に可能でした。
いつ役に立つかというと、「めったにない」ということです。私が見たプログラムのほとんどは、main
IOCCC エントリでした。