古いプロジェクトを掘り起こし、それをコンパイルしたかったのですが、いくつかのエラーを受け取りました。そのうちのいくつかは c2664 です。
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 &&'
関連するコード部分は次のとおりです。
//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)));
//...
}
関数パラメーターを作成しようとしましたconst
が、それは役に立ちませんでした。
VS2010で問題なくコンパイルできました。
これの原因と解決方法を見つけるのを手伝ってください。