如何使用包含std::map
的结构初始化std::unique_ptr
值?
我有这个示例struct
:
struct Dummy_s
{
int a;
std::unique_ptr<uint8_t> up;
};
以下作品:
std::map<uint16_t, Dummy_s> m;
m.insert(std::make_pair(0x0001, Dummy_s{1, std::make_unique<uint8_t>(42)}));
std::cout << (int)*m[0x0001].up;
但是,在m
定义时,我不知道如何进行初始化。
std::map<uint16_t, Dummy_s> m = {
// what should put here?
// my guess was:
// {0x0001, Dummy_s{1, std::make_unique<uint8_t>(42)}},
// {0x0002, Dummy_s{1, std::make_unique<uint8_t>(77)}}
};
但是编译器说:
调用std :: pair的隐式删除副本构造函数