我正在尝试在包含原子的地图中构造一个对象,因此它既不能复制也不能移动 AFAICT。
我对 C++参考的阅读是 mapemplace
应该能够做到这一点。但是由于已删除或不存在构造函数,以下代码无法编译。使用make_pair
没有帮助。
#include <atomic>
#include <unordered_map>
class Z {
std::atomic<int> i;
};
std::unordered_map<int, Z> map;
void test(void) {
map.emplace(0, Z()); // error
map[0] = Z(); // error
}
这是可能的,如果没有,为什么不呢?
编辑:编译器是 gcc 4.8.1,在 Linux 上