У меня есть класс, содержащий std::set
из boost::weak_ptr<T>
. У меня есть две функции begin() и end(), которые возвращают итератор в контейнер. Однако я не хочу, чтобы клиенты могли изменять T
. Простое возвращение const_iterator
не сработает, потому что T
, на которое указывает boost::weak_ptr
, будет редактируемым.
Что я хочу сделать, так это вернуть const_iterator
в std::set<boost::weak_ptr<T const> >
. Кастинг от std::set<boost::weak_ptr<T> >::const_iterator
не работает. Есть ли способ получить поведение, которое я хочу?
const_iterator
вstd::set<boost::weak_ptr<T> >
делает так, что клиент не может изменитьweak_ptr
. Однако он все еще может получить из негоshared_ptr<T>
, а затем изменитьT
по своему желанию. Чего я точно не хочу. - person AVH   schedule 27.03.2011