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.