为什么我不能编译unique_ptr <pair <int,int&=“”>&gt;

时间:2015-07-14 17:02:23

标签: c++ visual-studio-2010

我正在尝试创建一对,其中一对中的一个是参考。如果我尝试为这一对设置一个唯一的ptr,我会从实用程序中收到一条错误消息,指出无法将int转换为int&amp;。

我明白我没有一个默认的构造对,但是我的意图(通过把它放在一个ptr中)只是在我有一些东西用于引用时才新建它。

unique_ptr<pair<int, int&>> uptr; // Full error posted below
shared_ptr<pair<int, int&>> sptr; // Compiles fine

完全错误:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\utility(145) : error C2440: 'initializing' : cannot convert from 'int' to 'int &'
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\utility(142) : while compiling class template member function 'std::_Pair_base<_Ty1,_Ty2>::_Pair_base(int &&,int &&)'
with
[
    _Ty1=int,
    _Ty2=int &
]
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\utility(174) : see reference to class template instantiation 'std::_Pair_base<_Ty1,_Ty2>' being compiled
with
[
    _Ty1=int,
    _Ty2=int &
]
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\memory(2161) : see reference to class template instantiation 'std::pair<_Ty1,_Ty2>' being compiled
with
[
    _Ty1=int,
    _Ty2=int &
]
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\memory(2195) : see reference to class template instantiation 'std::_Unique_ptr_base<_Ty,_Dx,_Empty_deleter>' being compiled
with
[
    _Ty=std::pair<int,int &>,
    _Dx=std::default_delete<std::pair<int,int &>>,
    _Empty_deleter=true
]
myClass.h(99) : see reference to class template instantiation 'std::unique_ptr<_Ty>' being compiled
with
[
    _Ty=std::pair<int,int &>
]

我原本以为这会编译,并且无法解决为什么在这一行上初始化的原因,或者非ref int来自哪里。

0 个答案:

没有答案