下面的代码在Visual Studio的Visual C++ 19.0编译器上编译得很好,但是gcc 5.4.0抱怨复制构造函数是私有的.
#include <map>
class CMyClass
{
public:
CMyClass(int) {};
private:
CMyClass(const CMyClass&); // I want to avoid copy construction
};
int main()
{
std::map<int, CMyClass> mymap;
mymap.emplace(0, 0);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
错误信息:
‘CMyClass::CMyClass(const CMyClass&)’ is private
Run Code Online (Sandbox Code Playgroud)
是不是完全避免副本的副本emplace?我错过了什么吗?