- 759 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 23:44:18 ]
- >738
初期化は実行時に起こる。 テンプレートが使用された時、というのはコンパイル時の話。 件の場合、定数化されてしまうというのを無視すると int i = Array<int, 3>::Length; とすると、Array<int, 3>::Length に相当する定義がコンパイル時に生成される。 で、その生成されたソース中に初期化が存在するから、コンパイルした結果のコードでも 初期化が実行される。タイミングは普通の初期化と一緒で main 到達前。 >2、int i = Color::ColorDimension; > とアクセスしたときは派生元のArrayから初期化が行われることは保証されていますか? 実際には Color::ColorDimension は定数と見なされるので Array と無関係に単なる 3 として評価されると思われ。
|

|