私は可変長テンプレートにこのtutorialを読んでいたが、コードの下で:C++のtypedefとテンプレートの構文?
template<int index, class C>
struct container_index {
// points to the "next" container type
typedef typename container_index<
index-1,
typename C::base_container
>::container_type container_type;
// points to the next T-type
typedef typename container_index<
index-1,
typename C::base_container
>::type type;
};
これらのtypedefは、冗長なようだが、それはうまくコンパイルします。問題は単純に私はなぜ彼らがこのようなものなのか理解できず、私はこのケースを説明するチュートリアルを見つけられませんでした。誰かが何か説明をしてもらえますか? typedefの名前が繰り返される理由:
"::container_type container_type;"
"::type type;"
それはちょうどそのようにすることができませんでした:
typedef typename container_index<
index-1,
typename C::base_container
> type;
感謝します。
再帰のため? [この質問](http://stackoverflow.com/questions/36913554/c-typedef-and-templates-syntax)の説明も参照してください。 –