
Hi list, boost::iterator_range currently contains both 'iterator' and 'reference' typedefs, and yet only a 'const_iterator' one (no 'const_reference'). This can be a problem with Spirit actions (compilation errors, see trac ticket #2234 - http://svn.boost.org/trac/boost/ticket/2234). After removing Spirit code, it boils down to: //////////////////// #include <boost/spirit/include/phoenix_stl.hpp> #include <boost/range/iterator_range.hpp> int main() { typedef const boost::iterator_range< const char* > cir; boost::phoenix::stl::front::result< cir > foo; // compilation error return 0; } //////////////////// The problem comes from the instantiation of boost::phoenix::stl::front::result< const iterator_range<...> > which, since its template argument is const, accesses its const_reference typedef -- which doesn't exist in iterator_range. Does it make sense / is it possible to add a const_reference typedef in iterator_range? Thanks, Francois