【初心者歓迎】C/C++室 Ver.38【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
0759デフォルトの名無しさん
2007/06/18(月) 23:44:18初期化は実行時に起こる。
テンプレートが使用された時、というのはコンパイル時の話。
件の場合、定数化されてしまうというのを無視すると
int i = Array<int, 3>::Length;
とすると、Array<int, 3>::Length に相当する定義がコンパイル時に生成される。
で、その生成されたソース中に初期化が存在するから、コンパイルした結果のコードでも
初期化が実行される。タイミングは普通の初期化と一緒で main 到達前。
>2、int i = Color::ColorDimension;
> とアクセスしたときは派生元のArrayから初期化が行われることは保証されていますか?
実際には Color::ColorDimension は定数と見なされるので Array と無関係に単なる 3 として評価されると思われ。
■ このスレッドは過去ログ倉庫に格納されています