boost::container::set's iterator is a mutable iterator. This allows modification of keys, which can destroy the container's invariants, for example when using the erase-remove idiom.
This used to be a defect in std::set as well but has been fixed.
As can be seen in cppreference
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// DR 103. set::iterator is required to be modifiable,
// but this allows modification of keys.
typedef typename _Rep_type::const_iterator iterator;
typedef typename _Rep_type::const_iterator const_iterator;
boost::container::set
'siterator
is a mutable iterator. This allows modification of keys, which can destroy the container's invariants, for example when using the erase-remove idiom. This used to be a defect instd::set
as well but has been fixed. As can be seen in cppreferenceand in stdlib: