C ++中模板的const引用范围

时间:2013-09-06 03:31:13

标签: c++ c++11 stl

我在STL中读取了unique_ptr实现并且有一些问题。 unique_ptr::swap()的代码如下:

void
swap(unique_ptr& __u)
{
    using std::swap;
    swap(_M_t, __u._M_t);
}

我对这个功能有两个问题:

  1. unique_ptr::_M_t是私人会员,为什么__u._M_t可以访问?

  2. 为什么unique_ptr& __u中未指定模板参数?这是由特定的unique_ptr的构造函数完成的吗?

  3. 感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

  1. 该功能是会员。允许访问任何实例的私有成员。

  2. 如果在类体中定义,则不需要模板参数。编译器假定模板已实例化的参数相同。如果您想引用不同的模板实例,则需要参数,例如,如果unique_ptr<int>的代码由于某种原因需要引用unique_ptr<double>,则需要显式。