10

私が理解しているように、constexprテンプレートメタプログラミングとは異なりチューリング完全ではないので、これらは同じではないと思います。では、問題は、テンプレートメタプログラミングをどの程度constexpr時代遅れにするのかということです。

4

1 に答える 1

22

constexpr完全チューリング完全です。再帰が許可されます。これは、コンパイル時と実行時に機能する関数を定義する便利な方法です。constexprただし、関数は単なる関数であるため、型に対して操作を実行できません。(もちろん、テンプレートメタプログラミングを使用して上記の関数を定義しない限り。)

両方のクラス テンプレートをconstexpr使用して、コンパイル時の定数式を含めることができますが、類似点はそこで終わります。それらは冗長ではなく、TMP がすぐになくなることはありません。

ただし、いくつかの特に醜いコンパイル時の計算は、適切な関数としてよりエレガントに書き直される可能性があります。

于 2012-02-29T15:12:02.460 に答える