CTFEableな関数の条件
- 関数のソースコードがある(extern宣言だけがある関数はCTFEableでない)
- 関数の引数を、 C形式の可変個引数にしていない → Issue 6908
- synchronized関数でない
- 関数内部に以下が存在しない
例外のthrow(追記:例外をthrowする関数はCTFEableになりました)クラスの使用(追記:クラスを使用する関数はCTFEableになりました)- グローバルな変数への参照
- ローカルstatic変数への参照
- delete式 → Issue 6907
- typeid式 → Issue 7147
- CTFEableでない関数の呼び出し
- プラットフォーム間で互換性のないキャスト(例えばint[]からfloat[]へのキャスト、エンディアンに依存するキャストなど)
- asm文
- TemplateMixin文
- synchronized文
throw文(throw文はCTFEableになりました)with文(with文はCTFEableになりました)scope文(scope文はCTFEableになりました)try-catch-finally文(try-catch-finally文はCTFEableになりました)ラベル付きbreak,continue文(ラベル付きbreak,continue文はCTFEableになりました)
補足
CTFEには少なくないバグがあります。詳しくはここを参照してください。
Page Info | |
---|---|
Page Name : | SampleCodes/D言語文法/コンパイル時実行関連/1 |
Page aliases : | None |
Page owner : | SHOO |
Can Read | |
Groups : | All visitors |
Users : | All visitors |
Can Edit | |
Groups : | All visitors |
Users : | All visitors |
Counter: 1726,
today: 2,
yesterday: 0
Princeps date: 2012-03-31 (Sat) 00:28:15
Last-modified: 2012-03-31 (Sat) 00:28:15 (JST) (3220d) by ゲスト