Hi all,

I have found a problem compiling Boost, in libs/serialization/src/basic_text_oprimitive.cpp the usage of boost::iterator::iterator_facade is problematic.

I have reduced it to a two line minimal case:

#include <boost/archive/iterators/ostream_iterator.hpp>
boost::archive::iterators::ostream_iterator<char> it;

Trying to compile this with SunCC 5.10 (Sun Studio 12.1) in Solaris I get the following error:

"boost/iterator/iterator_facade.hpp", line 779: Error: value is not a member of boost::iterators::detail::is_traversal_at_least<std::output_iterator_tag, boost::iterators::bidirectional_traversal_tag>.
"boost/archive/iterators/ostream_iterator.hpp", line 40:     Where: While specializing "boost::iterators::iterator_facade<boost::archive::iterators::ostream_iterator<char>, char, std::output_iterator_tag, boost::archive::iterators::ostream_iterator<char>&, int>".
"boost/archive/iterators/ostream_iterator.hpp", line 40:     Where: Specialized in boost::archive::iterators::ostream_iterator<char>.
"fail.cpp", line 2:     Where: Specialized in non-template code.

I guess it must be some bug in the compiler, because  if I try to instantiate directly the template mentioned in the error message it works fine. (i.e. value is indeed a member).

#include <boost/iterator/iterator_facade.hpp>
const bool value = 
    boost::iterators::detail::is_traversal_at_least<
        std::output_iterator_tag, 
        boost::iterators::bidirectional_traversal_tag
    >::value;

For reference, this problem was *not* present in Boost 1.55.0.

Thanks!

PS: I have mentioned both libraries in the subject because I don't know if this is a problem with Boost.Iterator code, or with the usage of that library from Boost.Serialization.