map<T, shared_ptr<U>>その「削除」のイテレータshared_ptr、つまりへの逆参照を実装しようとしていますpair<T, U&>。ラッパーmapを範囲ベースのforループに適合させるためにこれが必要です。
boost::indirect_iteratorそのようなニーズのために設計されたもののようです。私はこれを試しました:
typedef std::map<int, std::shared_ptr<int>> M;
typedef boost::indirect_iterator<M::iterator, std::pair<int, int>> It;
indirect_iteratorこれは要件のために機能しません:
式*v(vはiterator_traits :: value_typeのオブジェクト)は、有効な式であり、参照に変換可能である必要があります。
boost::indirect_iteratorこのタスクに使用することは可能ですか?いいえの場合、私はこれを行うことができboost::iterator_adaptorますか?