0
我試圖在Boost Class template queue閱讀,發現類模板的以下內容:BOOST - 類模板隊列
template<typename T, typename A0, typename A1, typename A2>
class queue {
public:
// member classes/structs/unions
template<typename T, typename... Options>
struct implementation_defined {
// types
typedef node_allocator allocator;
typedef std::size_t size_type;
};
// construct/copy/destruct
queue(void);
template<typename U>
explicit queue(typename node_allocator::template rebind<U>::other const &);
explicit queue(allocator const &);
explicit queue(size_type);
template<typename U>
queue(size_type,
typename node_allocator::template rebind<U>::other const &);
~queue(void);
.......
};
我試圖瞭解模板一步一步 - 如此
template<typename T, typename A0, typename A1, typename A2>
對我而言,當提供類型T,A0,A1和A2時,將創建模板,如
queue<int, char, myclass, char>
myclass是用戶定義的類 - 我希望我的理解是正確的。但我不明白的是下面的部分 -
template<typename T, typename... Options>
struct implementation_defined {
// types
typedef node_allocator allocator;
typedef std::size_t size_type;
};
// construct/copy/destruct
queue(void);
template<typename U>
explicit queue(typename node_allocator::template rebind<U>::other const &);
看來另一個模板內的模板 - 但是我們如何提供類型的實例
template<typename T, typename... Options>
和
template<typename U>
有沒有辦法像模板一樣理解模板構造,以理解模板方法是什麼參數和返回類型?