理解shared_ptr别名构造函数的原型

时间:2018-02-24 00:46:45

标签: c++ c++11

g ++的shared_ptr别名构造函数的原型:

  template<typename _Yp>
    shared_ptr(const shared_ptr<_Yp>& __r, element_type* __p) noexcept
    : __shared_ptr<_Tp>(__r, __p) { }

给出的例子是:

shared_ptr< pair<int,int> > pii(new pair<int,int>());
shared_ptr<int> pi(pii, &pii->first);

有效;一直有效。但是看一下原型,_Yp是我们提供的用于实例化模板的模板参数,因此上面的最后一行感觉它应该应该读取:

shared_ptr<pair> pi(pii, &pii->first);

但是,示例肯定是正确的。那我们该如何解释呢?我今天第一次看了原型,我试图理解如何解释它。感谢您的意见/解释。

0 个答案:

没有答案