小编Ber*_*ert的帖子

为什么std :: map\templace需要gcc上的拷贝构造函数?

下面的代码在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?我错过了什么吗?

c++ gcc c++11

5
推荐指数
1
解决办法
595
查看次数

标签 统计

c++ ×1

c++11 ×1

gcc ×1