我有一个std::map<int, std::mutex>
,想要添加一个元素。由于std::mutex
不可移动,我需要转到emplace
,对吧?
我熟悉map.emplace(<key>, <constructorArgument>)
语法,但是当构造函数不带参数时,它是如何工作的?
最小测试代码,包括不起作用的东西
#include <iostream>
#include <map>
#include <mutex>
int main()
{
std::map<int, std::mutex> mm;
// mm[3] = std::mutex();
// mm.emplace(3, std::mutex());
// mm.emplace(3, {});
// mm.emplace(3, ());
// mm.emplace(3);
std::cout << mm.size() << " elements" << std::endl;
return 0;
}