Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2004-07-13 05:49:51


Synge Todo <wistaria_at_[hidden]> writes:

> Unfortunately, with the new iterator_facade implementation,
> filesystem/src/path_posix_windows.cpp" can not compile on
> Compaq Tru64 (cxx).
>
> cxx: Error: /usr/lib/cmplrs/cxx/V6.5-034/include/cxx/algorithm.cc, line 2582:
> no operator "<" matches these operands
> operand types are: const
> boost::detail::postfix_increment_proxy<boost::filesystem:
> :path::iterator> < const
> boost::detail::postfix_increment_proxy<boost::filesystem:
> :path::iterator>
> detected during instantiation of "bool
> std::lexicographical_compare(InputIterator1,
> InputIterator1, InputIterator2, InputIterator2) [with
> InputIterator1=boost::filesystem::path::iterator,
> InputIterator2=boost::filesystem::path::iterator]"
> if (*first2++ < *first1++) return false;
> --------------------^
> cxx: Info: 1 error detected in the compilation of "XXX/src/boost/libs/filesystem/src/path_posix_windows.cpp".
>
> Do you have any idea to fix this problem??

Yeah :(

It appears that the old input iterator requirements require that *r++
returns value_type instead of a proxy. However, *r++ must be a proxy
if the iterator is writable. Since there's no way to detect iterator
writability reliably, I'm going to have to make *r++ return value_type
whenever the specified iterator category is strictly
std::input_iterator_tag.

I'll let everyone know when it's checked in.

-- 
Dave Abrahams
Boost Consulting
http://www.boost-consulting.com

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk