Thread overview
problem with: reg_key + std::swap + BCB6 in 1.8.8
Oct 11, 2005
Pablo Aguilar
Oct 11, 2005
Matthew
Oct 12, 2005
Pablo Aguilar
Oct 16, 2005
Matthew
Oct 30, 2005
Matthew
October 11, 2005
Hi,

Using WinSTL's reg_key header file seems to break std::swap for BCB6. Somewhere in it, there's the swap specialization for reg_keys placed in the std namespace, however, that seems to be taking precedence over the original std::swap.

Any call to std::swap complains about arguments not being of type reg_key. Commenting out the specialization works, fine for me, but I figure a proper workaround for BCB6 might be in order.

...

Was 1.8.8 officially released? 'cuz the release notes still read 1.8.7, if I'm not mistaken.

...

Cheers,
Pablo


October 11, 2005
> Using WinSTL's reg_key header file seems to break std::swap for BCB6. Somewhere in it, there's the swap specialization for reg_keys placed in
the
> std namespace, however, that seems to be taking precedence over the
original
> std::swap.
>
> Any call to std::swap complains about arguments not being of type reg_key. Commenting out the specialization works, fine for me, but I figure a
proper
> workaround for BCB6 might be in order.

I'll take a look. If you can supply a small project that exemplifies the problem that would be immensely helpful.

> Was 1.8.8 officially released? 'cuz the release notes still read 1.8.7, if I'm not mistaken.

I was working on a way to automate the preparation of the release notes by querying source control and whatnot, but ran out of time, and then discovered I'd released it without release notes. Sigh.

Since I expect 1.8.9 will be out in another week or so, I figured I'd let it lie. (I'm just ever so slightly swamped at the mo <G>)

Since I got your attention, I'm hoping for some help in a while in sorting things out a little, prior to 1.9 (which will coincide with the manuscript for Extended STL hitting the inboxes of the reviewers for first review; in about 4-6 weeks' time), but it may be more effective to hit you up on that in email form. ;-)

Cheers

Matthew


October 12, 2005
> I'll take a look. If you can supply a small project that exemplifies the problem that would be immensely helpful.

Sure, code looks like this:
    #include <utility>
    #include <algorithm>
    // ^^ I'm not sure which file has std::swap for BCB

    #include <winstl/reg_key.hpp>

    #pragma argsused
    int main(int argc, char* argv[])
    {
        int i = 0, j = 1;
        std::swap(i, j);
        // ^ error here ^
        // tries to call std::swap(reg_key&, reg_key&);
        // which is declared in winstl/reg_key inside namespace std
        return 0;
    }

The project + source files are attached

> I was working on a way to automate the preparation of the release notes by querying source control and whatnot, but ran out of time, and then discovered I'd released it without release notes. Sigh.
>
> Since I expect 1.8.9 will be out in another week or so, I figured I'd let
it
> lie. (I'm just ever so slightly swamped at the mo <G>)
>
> Since I got your attention, I'm hoping for some help in a while in sorting things out a little, prior to 1.9 (which will coincide with the manuscript for Extended STL hitting the inboxes of the reviewers for first review; in about 4-6 weeks' time), but it may be more effective to hit you up on that in email form. ;-)
>
> Cheers
>
> Matthew

Ok, well... I kinda quit my job, so I've time to spare... let me know what you need help with...


Pablo



October 16, 2005
Looks like a straight bug in Borland's name resolution. I'll have to remove the swap's for Borland compilation from the requisite components.

"Pablo Aguilar" <pablo.aguilar@gmail.com> wrote in message news:dijnu2$2336$1@digitaldaemon.com...
> > I'll take a look. If you can supply a small project that exemplifies the problem that would be immensely helpful.
>
> Sure, code looks like this:
>     #include <utility>
>     #include <algorithm>
>     // ^^ I'm not sure which file has std::swap for BCB
>
>     #include <winstl/reg_key.hpp>
>
>     #pragma argsused
>     int main(int argc, char* argv[])
>     {
>         int i = 0, j = 1;
>         std::swap(i, j);
>         // ^ error here ^
>         // tries to call std::swap(reg_key&, reg_key&);
>         // which is declared in winstl/reg_key inside namespace std
>         return 0;
>     }
>
> The project + source files are attached
>
> > I was working on a way to automate the preparation of the release notes
by
> > querying source control and whatnot, but ran out of time, and then discovered I'd released it without release notes. Sigh.
> >
> > Since I expect 1.8.9 will be out in another week or so, I figured I'd
let
> it
> > lie. (I'm just ever so slightly swamped at the mo <G>)
> >
> > Since I got your attention, I'm hoping for some help in a while in
sorting
> > things out a little, prior to 1.9 (which will coincide with the
manuscript
> > for Extended STL hitting the inboxes of the reviewers for first review;
in
> > about 4-6 weeks' time), but it may be more effective to hit you up on
that
> > in email form. ;-)
> >
> > Cheers
> >
> > Matthew
>
> Ok, well... I kinda quit my job, so I've time to spare... let me know what you need help with...
>
>
> Pablo
>
>
>


October 30, 2005
Arturius gives:

Arturius Compiler Multiplexer, version 2.0.1.01-alpha (Oct  9 2005,
16:08:44)
Copyright Synesis Software, 2001-2005; all rights reserved
Written by Matthew Wilson
http://arturius.org/, http://synesis.com.au/
Tool: bcc/5.6
..\code.cpp(16): Warning W8030 : Temporary used for parameter 'lhs'
in call to 'std::swap(stlsoft::winstl_project::reg_key_a
&,stlsoft::winstl_project::reg_key_a &)' in function main(int,char *
*)
..\code.cpp(16): Error E2064 : Cannot initialize
'stlsoft::winstl_project::reg_key_a &' with 'int' in function
main(int,char * *)
..\code.cpp(16): Error E2342 : Type mismatch in parameter 'lhs'
(wanted 'stlsoft::winstl_project::reg_key_a &', got 'int') in
function main(int,char * *)
..\code.cpp(16): Warning W8030 : Temporary used for parameter 'rhs'
in call to 'std::swap(stlsoft::winstl_project::reg_key_a
&,stlsoft::winstl_project::reg_key_a &)' in function main(int,char *
*)
..\code.cpp(16): Error E2064 : Cannot initialize
'stlsoft::winstl_project::reg_key_a &' with 'int' in function
main(int,char * *)
..\code.cpp(16): Error E2342 : Type mismatch in parameter 'rhs'
(wanted 'stlsoft::winstl_project::reg_key_a &', got 'int') in
function main(int,char * *)
..\code.cpp(18): Warning W8004 : 'j' is assigned a value that is
never used in function main(int,char * *)
..\code.cpp(18): Warning W8004 : 'i' is assigned a value that is
never used in function main(int,char * *)
..\code.cpp(18): Warning W8057 : Parameter 'argc' is never used in
function main(int,char * *)
..\code.cpp(18): Warning W8057 : Parameter 'argv' is never used in
function main(int,char * *)
Tool: cw/7
Tool: cw/8
Tool: dm/8.40
Tool: dm/8.44
Tool: dm/8.45
Tool: dm/beta-sgi
[Arturius:dm_filter] ..\code.cpp(16) : Error: undefined identifier
'std'
Tool: dm/beta-stlport
Tool: gcc/2.9.5
[Arturius:gcc_filter]
H:/STLSoft/Releases/1.8.x/STLSoft/include/winstl.h(284): #error
Versions of GNU C/C++ prior to 3.0 are not supported by the WinSTL
libraries
Tool: gcc/3.2
Tool: gcc/3.3
Tool: gcc/3.4
Tool: icl/6
Tool: icl/7
Tool: icl/8
Tool: ow/1.2
..\code.cpp(5): Error! E059: col(18) unable to open 'utility'
..\code.cpp(6): Error! E059: col(20) unable to open 'algorithm'
..\code.cpp(9): Error! E059: col(29) unable to open
'winstl/reg_key.hpp'
..\code.cpp(16): Error! E241: col(10) 'class std' has not been
declared
..\code.cpp(16): Error! E029: col(10) symbol 'swap' has not been
declared
Tool: ow/1.3
..\code.cpp(5): Error! E059: col(18) unable to open 'utility'
..\code.cpp(6): Error! E059: col(20) unable to open 'algorithm'
..\code.cpp(9): Error! E059: col(29) unable to open
'winstl/reg_key.hpp'
..\code.cpp(16): Error! E241: col(10) 'class std' has not been
declared
..\code.cpp(16): Error! E029: col(10) symbol 'swap' has not been
declared
Tool: vc/2
..\code.cpp(5): fatal error C1083: Cannot open include file:
'utility': No such file or directory
Tool: vc/4.2
Tool: vc/5
Tool: vc/6
Tool: vc/7
Tool: vc/7.1
Tool: vc/8


It's pretty clear that Borland's a bit of a dunce here. I've adjust
winstl_reg_key.h accordingly, and checked all the other
specialisations
of std::swap(), but please let me know if there're any
similar problems elsewhere. The change will be out with 1.8.9 (or
1.9.1)