www.digitalmars.com         C & C++   DMDScript  

c++.stlsoft - problem with: reg_key + std::swap + BCB6 in 1.8.8

reply "Pablo Aguilar" <paguilarg hotmail.com> writes:
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
Oct 11 2005
parent reply "Matthew" <matthew hat.stlsoft.dot.org> writes:
 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

 std namespace, however, that seems to be taking precedence over the

 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

 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
Oct 11 2005
parent reply "Pablo Aguilar" <pablo.aguilar gmail.com> writes:
 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

 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
Oct 12 2005
next sibling parent "Matthew" <matthew hat.stlsoft.dot.org> writes:
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


 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


 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


 things out a little, prior to 1.9 (which will coincide with the


 for Extended STL hitting the inboxes of the reviewers for first review;


 about 4-6 weeks' time), but it may be more effective to hit you up on


 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

Oct 16 2005
prev sibling parent "Matthew" <admin stlsoft.dot.dot.dot.dot.org> writes:
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)
Oct 29 2005