Boost.Range iterator_range und sub_range aus const-Methode zurückgeben.
-
Moin,
ich hab folgendes:
class A { public: typedef boost::iterator_range<vector<int>::iterator > range; range ints() const { return range(mInts.begin(), mInts.end()); } // geht nicht range ints() { return range(mInts.begin(), mInts.end()); } // geht private: vector<int> mInts; };
Ich möchte von einem Objekt das const ist, eine range von Objekten zurückgeben.
Ich habe es auch mit sub_range probiert. Jedesmal sagt er mir, dass Typen
nicht kompatibel sind.Ist sub_range nicht gerade dafür da, const zu ermöglichen? Wie mache ich das?
Ich würd zur Not auch eine Range mit iterator statt const_iterator zurückgeben,
die Methode selbst sollt nur const sein.Der Fehler:
/usr/include/boost/range/iterator_range.hpp:75: error: no matching function for call to ‘__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >::__normal_iterator(__gnu_cxx::__normal_iterator<const int*, std::vector<int, std::allocator<int> > >)’
Gruß
-
Du musst einen vector::const_iterator verwenden