CPP:错误:无法引用默认构造函数--它是一个已删除的函数



debug.cpp

struct debug_buf_list
{
int id;
uint32 *buf;
};
struct debug_map_t 
{
int b;
map<uint32 index, struct debug_buf_list *> _debug_list;
};
std::atomic<debug_map_t> debug_info;

编译上面的代码生成如下错误:

错误:默认构造函数"std::atomic<debug_map_t>quot;无法引用--它是一个已删除的函数std::atomic<debug_map_t>debug_info;

如果不使用映射,相同的定义也可以正常工作。

std::atomic模板要求类型T为TriviallyCopyable类型。因此,您不能为您的结构贪得无厌,因为它包含std::map,它有一个用户定义的复制构造函数。错误消息可能是从实现该需求的方式中构思出来的。对于不常见的可复制类型,默认构造函数似乎是通过enable_if禁用的。

最新更新