mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-22 13:15:12 +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
28cb6764fc
commit
05d379a9aa
@ -587,7 +587,7 @@ class_<Map, holder_type> bind_map(handle scope, const std::string &name, Args&&.
|
|||||||
auto it = m.find(k);
|
auto it = m.find(k);
|
||||||
if (it == m.end())
|
if (it == m.end())
|
||||||
throw key_error();
|
throw key_error();
|
||||||
return m.erase(it);
|
m.erase(it);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -181,3 +181,25 @@ def test_noncopyable_containers():
|
|||||||
vsum += v.value
|
vsum += v.value
|
||||||
|
|
||||||
assert vsum == 150
|
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