C++ C+中模板的常量引用范围+;

C++ C+中模板的常量引用范围+;,c++,c++11,stl,C++,C++11,Stl,我阅读了STL中的unique_ptr实现,并提出了一些问题。unique\u ptr::swap()的代码如下: void swap(unique_ptr& __u) { using std::swap; swap(_M_t, __u._M_t); } 我有两个关于函数的问题: unique\u ptr::\u M\u t是私人会员,为什么可以访问\u.M\u t 为什么在unique\ptr&\uu中未指定模板参数?这是由特定的唯一\u ptr构造函数完成的吗 谢谢

我阅读了STL中的unique_ptr实现,并提出了一些问题。
unique\u ptr::swap()
的代码如下:

void
swap(unique_ptr& __u)
{
    using std::swap;
    swap(_M_t, __u._M_t);
}
我有两个关于函数的问题:

  • unique\u ptr::\u M\u t
    是私人会员,为什么可以访问
    \u.M\u t

  • 为什么在
    unique\ptr&\uu
    中未指定模板参数?这是由特定的唯一\u ptr构造函数完成的吗

  • 谢谢你的帮助

  • 该函数是一个成员。允许访问任何实例的私有成员

  • 如果它是在类主体中定义的,则不需要模板参数。编译器假定模板实例化时使用的参数相同。如果希望引用不同的模板实例化,则需要参数,例如,如果
    unique_ptr
    的代码出于某种原因需要引用
    unique_ptr
    ,则需要显式引用


  • 3.允许成员函数访问其自身类的任何实例的私有成员。如果您使用显式模板参数引用另一个专门化(实例化),您将获得一个不同的类,并且无法访问私有成员。