apr*_*amc 0 c++ deleted-functions c++11 c++14
我有一个A班
struct A
{
A() = delete;
A(const A&) = default;
A& operator=(const A&) = default;
A(A&&) = default;
A& operator=(A&&) = default;
explicit A(int i) ....
// a few explicit constructors
}
Run Code Online (Sandbox Code Playgroud)
当我试图获得存储在unordered_map中的strcut A时,如下所示:
auto a = my_map[key_];
Run Code Online (Sandbox Code Playgroud)
我明白了
非法使用删除的方法
错误.我的理解是这是一个复制结构,但我不知道为什么编译器在分配之前调用默认构造函数.
来自http://en.cppreference.com/w/cpp/container/map/operator_at:
mapped_type必须满足CopyConstructible和DefaultConstructible的要求.
由于删除了默认构造函数,编译器会正确报告错误.
进一步向下链接页面:
返回值
如果不存在具有键键的元素,则引用新元素的映射值.否则,引用其键等效于key的现有元素的映射值.
如果不存在具有给定键的元素,则该函数插入新元素.需要默认构造函数才能插入新元素.
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |