To reiterate Robert Jones' reply, yes, AFAIK, a const iterator should pass a const-qualified value_type to iterator_facade/iterator_adaptor, as implied by the constant node_iterator example in the docs:
http://www.boost.org/doc/libs/1_48_0/libs/iterator/doc/iterator_facade.html#a-constant-node-iterator
On a related note, you should specify your reference type you pass to iterator_adaptor explicitly as the return type of your dereference member function. Otherwise I think you'll end up returning a reference to a temporary within operator*. I believe that's *actually* what the quoted error is trying to tell you.
HTH,
- Jeff