mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-11 08:03:55 +00:00
fix return from std::map bindings to __delitem__ (#1229)
Fix return from `std::map` bindings to `__delitem__`: we should be returning `void`, not an iterator. Also adds a test for map item deletion.
This commit is contained in:
parent
ed0a72eb0e
commit
17ad517d61
@ -587,7 +587,7 @@ class_<Map, holder_type> bind_map(handle scope, const std::string &name, Args&&.
|
||||
auto it = m.find(k);
|
||||
if (it == m.end())
|
||||
throw key_error();
|
||||
return m.erase(it);
|
||||
m.erase(it);
|
||||
}
|
||||
);
|
||||
|
||||
|
@ -181,3 +181,25 @@ def test_noncopyable_containers():
|
||||
vsum += v.value
|
||||
|
||||
assert vsum == 150
|
||||
|
||||
|
||||
def test_map_delitem():
|
||||
mm = m.MapStringDouble()
|
||||
mm['a'] = 1
|
||||
mm['b'] = 2.5
|
||||
|
||||
assert list(mm) == ['a', 'b']
|
||||
assert list(mm.items()) == [('a', 1), ('b', 2.5)]
|
||||
del mm['a']
|
||||
assert list(mm) == ['b']
|
||||
assert list(mm.items()) == [('b', 2.5)]
|
||||
|
||||
um = m.UnorderedMapStringDouble()
|
||||
um['ua'] = 1.1
|
||||
um['ub'] = 2.6
|
||||
|
||||
assert sorted(list(um)) == ['ua', 'ub']
|
||||
assert sorted(list(um.items())) == [('ua', 1.1), ('ub', 2.6)]
|
||||
del um['ua']
|
||||
assert sorted(list(um)) == ['ub']
|
||||
assert sorted(list(um.items())) == [('ub', 2.6)]
|
||||
|
Loading…
Reference in New Issue
Block a user