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>
有没有办法像模板一样理解模板构造,以理解模板方法是什么参数和返回类型?