tôi đào lên một dự án cũ và muốn biên dịch nó, nhưng đã nhận được một số lỗi, một vài trong số những trở thành một c2664:c2664 trong Visual Studio 2012 khi sử dụng make_pair
error C2664: 'std::make_pair' : cannot convert parameter 1 from 'CUser *' to 'CUser *&&'
error C2664: 'std::make_pair' : cannot convert parameter 1 from 'unsigned long' to ' unsigned long &&'
Các bộ phận mã có liên quan bao gồm:
//typedef for the userdata map
typedef std::map<unsigned long, std::pair<CUser*,userstatus*>> UserDataMapType;
//...
Inc::incret CUserManager::AddUser(unsigned long ID, CUser* pUser, userstatus* pUserStatus)
{
//...
std::pair<UserDataMapType::iterator, bool> ret = m_mapUserData.insert(std::make_pair<unsigned long, std::pair<CUser*, userstatus*>>(ID, std::make_pair<CUser*, userstatus*>(pUser, pUserStatus)));
//...
}
Tôi đã cố gắng thực hiện các tham số chức năng const
, nhưng điều đó không có tác dụng.
Nó đã biên dịch tốt trong VS2010.
Hãy giúp tôi tìm nguyên nhân gây ra điều này và cách giải quyết.