December 30, 2009
I tested code snippet below, and VC6 compile report compile error.
////////////////////////////////////////////////////////////////
// code snippet
{
        typedef stlsoft::auto_buffer<int> buffer_t;
        buffer_t buff(20);
        int M=20;
        for (buffer_t::iterator iter = buff.begin(); iter != buff.end(); ++iter) {
            *iter = M--;
        }
        for (buffer_t::const_reverse_iterator const_riter = (/*(const buffer_t&)*/buff).rbegin(); const_riter != (/*(const buffer_t&)*/buff).rend(); ++const_riter) {
            ;
        }
    }

// compile error from VC6
example.winstl.filesystem.findfile_sequence.cpp
d:\codebase\stlsoft\stlsoft-1.10-alpha-12-delta\examples\winstl\filesystem\example.winstl.filesystem.findfile_sequence\example.winstl.filesystem.findfile_sequence.cpp(73) : error C2440: 'initializing' : cannot convert from 'struct stlsoft::reverse_i
terator_base<int *,int,int &,int *,int>' to 'struct stlsoft::const_reverse_iterator_base<int const *,int const ,int const &,int const *,int>'
        No constructor could take the source type, or constructor overload resolution was ambiguous
d:\codebase\stlsoft\stlsoft-1.10-alpha-12-delta\examples\winstl\filesystem\example.winstl.filesystem.findfile_sequence\example.winstl.filesystem.findfile_sequence.cpp(73) : error C2678: binary '!=' : no operator defined which takes a left-hand opera
nd of type 'struct stlsoft::const_reverse_iterator_base<int const *,int const ,int const &,int const *,int>' (or there is no acceptable conversion)
Error executing cl.exe.

example.winstl.filesystem.findfile_sequence.obj - 2 error(s), 0 warning(s)

////////////////////////////////////////////////////////////////
As we known, auto_buffer has overload rbegin() for const_reverse_iterator, I wonder why produce such error?

Thanks.

January 06, 2010
Steven

This has been a known defect for quite some time, but it's never been fixed because (i) I was intending to address this with STLSoft 1.9 (and I was expecting that to be done a couple of years ago!), and (ii) I thought fixing it in 1.8 would take too much effort.

Turns out I was wrong on both: I've just spent a cpl hours and have made it work for 1.8 (with VC++ 6 & 9, GCC 3.4 and Borland 5.6).

I've added an item to the project tracker - https://sourceforge.net/tracker/?func=detail&aid=2926633&group_id=238860&atid=1107746 - which you can monitor for progress, but I should hope to have a new STLSoft release by the coming w/e.

Thanks for raising my attention to this matter again.

May I ask: how did you hear about STLSoft, and what are you using it for?

Cheers

Matt



"Steven" <kuaf.lee@gmail.com> wrote in message news:hhf6qk$2prp$1@digitalmars.com...
>I tested code snippet below, and VC6 compile report compile error.
> ////////////////////////////////////////////////////////////////
> // code snippet
> {
>        typedef stlsoft::auto_buffer<int> buffer_t;
>        buffer_t buff(20);
>        int M=20;
>        for (buffer_t::iterator iter = buff.begin(); iter != buff.end();
> ++iter) {
>            *iter = M--;
>        }
>        for (buffer_t::const_reverse_iterator const_riter = (/*(const
> buffer_t&)*/buff).rbegin(); const_riter != (/*(const
> buffer_t&)*/buff).rend(); ++const_riter) {
>            ;
>        }
>    }
>
> // compile error from VC6
> example.winstl.filesystem.findfile_sequence.cpp
> d:\codebase\stlsoft\stlsoft-1.10-alpha-12-delta\examples\winstl\filesystem\example.winstl.filesystem.findfile_sequence\example.winstl.filesystem.findfile_sequence.cpp(73)
> : error C2440: 'initializing' : cannot convert from 'struct
> stlsoft::reverse_i
> terator_base<int *,int,int &,int *,int>' to 'struct
> stlsoft::const_reverse_iterator_base<int const *,int const ,int const
> &,int const *,int>'
>        No constructor could take the source type, or constructor overload
> resolution was ambiguous
> d:\codebase\stlsoft\stlsoft-1.10-alpha-12-delta\examples\winstl\filesystem\example.winstl.filesystem.findfile_sequence\example.winstl.filesystem.findfile_sequence.cpp(73)
> : error C2678: binary '!=' : no operator defined which takes a left-hand
> opera
> nd of type 'struct stlsoft::const_reverse_iterator_base<int const *,int
> const ,int const &,int const *,int>' (or there is no acceptable
> conversion)
> Error executing cl.exe.
>
> example.winstl.filesystem.findfile_sequence.obj - 2 error(s), 0 warning(s)
>
> ////////////////////////////////////////////////////////////////
> As we known, auto_buffer has overload rbegin() for const_reverse_iterator,
> I wonder why produce such error?
>
> Thanks.
>