はC++テンプレート関数プログラミングの一形態をプログラミングしていますか?そうであれば、C++ Template Metaprogrammingに関連するnon-tail再帰のためのstackoverflowのような落とし穴をいくつか行いますか?はC++テンプレート関数プログラミングの一形態をプログラミングプログラミング
this questionの階乗テンプレートの例では、標準的な関数型プログラミングだと思います。または類似点は表面的なものに過ぎないのでしょうか?
#include <iostream>
using namespace std;
template< int n >
struct factorial { enum { ret = factorial< n - 1 >::ret * n }; };
template<>
struct factorial<0> { enum { ret = 1 }; };
int main() {
cout << "7! = " << factorial<7>::ret << endl; // 5040
return 0;
}
C++テンプレートは実際には非常に純粋な関数型プログラミング言語です(副作用はありません)。ほとんどの関数型言語と異なり、コンパイル時に完全に評価されるという特殊性があります。構文はあまり良くありません。それで、同じ種類のテクニックとアルゴリズムが、他のテクニックとアルゴリズムともマップされていることは理にかなっています。実際に、HaskellのサブセットをC++のテンプレートに「desugar」するプロジェクトが存在します。私はパフォーマンスの特徴/ "操作上の意味"についてはあまり知らない。 – glaebhoerl
[boost :: phoenix](http://www.boost.org/doc/libs/1_50_0/libs/spirit/phoenix/doc/html/index.html)を見てください。 –
これは間違いなく本当の質問です。ちょっと不器用です。 – Marcin