[Threads] Failures on msvc, msvc-stlport

The Threads library is failing the majority of the regression tests on Visual C++ 6.0, where it was previously supported. Are we continuing to support this compiler in the Thread library? If so, we need to fix these bugs immediately; if not, we need to mark the toolsets unusable with the Thread library. Doug

Doug Gregor wrote:
The Threads library is failing the majority of the regression tests on Visual C++ 6.0, where it was previously supported. Are we continuing to support this compiler in the Thread library? If so, we need to fix these bugs immediately; if not, we need to mark the toolsets unusable with the Thread library.
I don't know of any reason these shouldn't work. Unfortunately, when I try to look at the regression reports I get a "Page not found!" error. Mike

As far as I can see, these are all type_traits compile errors in the Boost.Thread regression tests. Did something change fairly recently in the type traits library or the way that Boost.Test uses it that might cause this? Unfortunately, I don't have access to VC6 to help me debug it, and don't know enough about changes in those or other libraries to debug the problem "in a vacuum". Mike

Michael Glassford ha escrito:
As far as I can see, these are all type_traits compile errors in the Boost.Thread regression tests. Did something change fairly recently in the type traits library or the way that Boost.Test uses it that might cause this? Unfortunately, I don't have access to VC6 to help me debug it, and don't know enough about changes in those or other libraries to debug the problem "in a vacuum".
The problem is due to an internal typedef in the is_convertible implementation called "binder", which clashes with your "binder" in libs\thread\testutil.inl. The "binder" in is_convertible was introduced about two months ago, hence the regression. I don't know the exact circumstances where this compiler bug shows, but I know I've been bitten by it in the past. Simply renaming your binder to anything else (like in the attached patch) solves the problem. HTH Joaquín M López Muñoz Telefónica, Investigación y Desarrollo 143c143 < class binder ---
class binder_class 146c146 < binder(const F& func, const T& param)
binder_class(const F& func, const T& param)
156c156 < binder<F, T> bind(const F& func, const T& param) ---
binder_class<F, T> bind(const F& func, const T& param) 158c158 < return binder<F, T>(func, param);
return binder_class<F, T>(func, param);

OK, I've done this. Thanks for the info. Mike Joaquín Mª López Muñoz wrote:
Michael Glassford ha escrito:
As far as I can see, these are all type_traits compile errors in the Boost.Thread regression tests. Did something change fairly recently in the type traits library or the way that Boost.Test uses it that might cause this? Unfortunately, I don't have access to VC6 to help me debug it, and don't know enough about changes in those or other libraries to debug the problem "in a vacuum".
The problem is due to an internal typedef in the is_convertible implementation called "binder", which clashes with your "binder" in libs\thread\testutil.inl. The "binder" in is_convertible was introduced about two months ago, hence the regression. I don't know the exact circumstances where this compiler bug shows, but I know I've been bitten by it in the past. Simply renaming your binder to anything else (like in the attached patch) solves the problem.
HTH
Joaquín M López Muñoz Telefónica, Investigación y Desarrollo
------------------------------------------------------------------------
143c143 < class binder ---
class binder_class
146c146 < binder(const F& func, const T& param) ---
binder_class(const F& func, const T& param)
156c156 < binder<F, T> bind(const F& func, const T& param) ---
binder_class<F, T> bind(const F& func, const T& param)
158c158 < return binder<F, T>(func, param); ---
return binder_class<F, T>(func, param);
------------------------------------------------------------------------
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Joaquín Mª López Muñoz writes:
Michael Glassford ha escrito:
As far as I can see, these are all type_traits compile errors in the Boost.Thread regression tests. Did something change fairly recently in the type traits library or the way that Boost.Test uses it that might cause this? Unfortunately, I don't have access to VC6 to help me debug it, and don't know enough about changes in those or other libraries to debug the problem "in a vacuum".
The problem is due to an internal typedef in the is_convertible implementation called "binder", which clashes with your "binder" in libs\thread\testutil.inl. The "binder" in is_convertible was introduced about two months ago, hence the regression.
Ouch. Even though it's a compiler bug, it's really the type_traits, not the user's code which should accommodate for it. John, could we use some less common name there? -- Aleksey Gurtovoy MetaCommunications Engineering

The problem is due to an internal typedef in the is_convertible implementation called "binder", which clashes with your "binder" in libs\thread\testutil.inl. The "binder" in is_convertible was introduced about two months ago, hence the regression.
Ouch. Even though it's a compiler bug, it's really the type_traits, not the user's code which should accommodate for it. John, could we use some less common name there?
Grief, that's horrible if we all have to mangle our names, but yes, I'll change it to something type_traits specific. John.
participants (5)
-
Aleksey Gurtovoy
-
Doug Gregor
-
Joaquín Mª López Muñoz
-
John Maddock
-
Michael Glassford