我對可變參數模板閱讀本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名稱重複:
"::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)。 –