2016-12-19 5 views
1

プログラムが完全にconstexpr関数(コンパイル時に計算可能)で構成されていることを考慮すると、constexpr関数を呼び出すには "レベル"の深さに限界がありますか? constexpr関数のみを使用することによって、コンパイル時に適切な条件が与えられたときにプログラム全体を計算できますか?constexpr式はどれくらい深く入れ子にできますか?

+0

C++標準では、明示的な制限は指定されていません。 –

+1

制限は、言語自体ではなく、 'constexpr'ステートメント(コンパイラメモリ、スタックオーバーフローなど)を処理するコンパイラによって決定されると思います。 – lcs

+0

2番目の質問に関して、プログラム全体は表現ではありません。コンパイル時に計算されたプログラムはどういう意味ですか? 'int main(){return 0;}のようなものです。 } '(コンパイル時に計算された結果を返すプログラム:ゼロ)? –

答えて

6

標準は、附属書Bのに少なくとも512の制限を推奨していますが、適合する実装は推奨に準拠する必要はありません。

- 再帰的なconstexpr関数の呼び出し[512]。

+0

メジャーコンパイラ(GCC/Clang/MSC)の実装されている制限を持つリストがありますか? – IInspectable

+1

@IInspectable Clangの場合:http://clang.llvm.org/docs/UsersManual.html#controlling-implementation-limits GCCの場合:https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Dialect -Options.html – Brian

関連する問題