BOOST - 类模板队列

时间:2017-08-04 08:47:41

标签: c++ boost

我试图阅读Boost Class template queue并找到以下类课程内容:

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>

有没有办法理解像类这样的模板构造,以了解模板方法的参数和返回类型是什么?

1 个答案:

答案 0 :(得分:1)

template<typename U>queue构造函数模板。它的参数是从调用时传递的参数推导出来的。

struct implementation_defined是一个常规嵌套类,实际上并不是模板本身。它看起来像文档问题,因为它实际上是defined as

struct implementation_defined
{
    typedef node_allocator allocator;
    typedef std::size_t size_type;
};