ボールドテキスト### 前提・実現したいこと
vector<string>型で定義された集合のvector<vector<string>>型の冪集合を作成する関数をテンプレート化して冪集合の冪集合なども作成できる関数power()という引数がT(テンプレート)、返り値がvector<T>な関数があるのですが、これを使ってある自然数nを渡したらn回この関数を起動して冪集合の冪集合の・・・ということを実現しようとしたのですが、型推論がうまくいかなかったためかコンパイルが終わらなくなりました。そこで人に尋ねたところ以下のようなソースコードを渡されました。曰く、読むには多大な知識を擁するそうなのですが、具体的に何を行なっているかを解説していただければ幸いです。もしくは参考になる資料を提示して頂けると勉強がしやすいのでお願いします。
該当のソースコード
//1
//呼び出し方Recurr<vactor<string>, 2>::incr_power(sa);
template<typename T, std::size_t N>
struct Recurr;
template<typename T>
struct Recurr<T, 0> {
static void incr_power(const T& x)
{
cout <<"done\n";
}
};
template<typename T, std::size_t N>
struct Recurr {
static void incr_power(const T& x)
{
cout << N <<endl;
cout << x <<endl;
Recurr<vector<T>, N-1>::incr_power(power(x));
cout << endl;
}
};
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/08 15:22