unique_ptr作为std :: map中的值

时间:2019-03-05 09:40:00

标签: c++ c++11 unique-ptr stdmap

如何使用包含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的隐式删除副本构造函数

0 个答案:

没有答案