非法使用已删除的函数
illegal use of deleted function
我有一个class一个
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
}
当我尝试获取存储在 unordered_map 中的 strcut A 时,如下所示:
auto a = my_map[key_];
我明白了
illegal use of deleted method
错误。
我的理解是这是一个复制构造,但我不知道为什么编译器会在赋值之前调用默认构造函数。
来自http://en.cppreference.com/w/cpp/container/map/operator_at:
mapped_type must meet the requirements of CopyConstructible and DefaultConstructible.
由于删除了默认构造函数,编译器正确地报告了错误。
在链接页面的下方:
Return value
Reference to the mapped value of the new element if no element with key key existed. Otherwise a reference to the mapped value of the existing element whose key is equivalent to key.
如果不存在具有给定键的元素,该函数将插入一个新元素。需要默认构造函数才能插入新元素。
我有一个class一个
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
}
当我尝试获取存储在 unordered_map 中的 strcut A 时,如下所示:
auto a = my_map[key_];
我明白了
illegal use of deleted method
错误。 我的理解是这是一个复制构造,但我不知道为什么编译器会在赋值之前调用默认构造函数。
来自http://en.cppreference.com/w/cpp/container/map/operator_at:
mapped_type must meet the requirements of CopyConstructible and DefaultConstructible.
由于删除了默认构造函数,编译器正确地报告了错误。
在链接页面的下方:
Return value
Reference to the mapped value of the new element if no element with key key existed. Otherwise a reference to the mapped value of the existing element whose key is equivalent to key.
如果不存在具有给定键的元素,该函数将插入一个新元素。需要默认构造函数才能插入新元素。