Re: [boost] [config][gcc 3.4.2] Request for test about functiontemplate ordering

----- Mensaje original ----- De: Martin Wille <mw8329@yahoo.com.au> Fecha: Sábado, Diciembre 18, 2004 10:10 pm Asunto: Re: [boost] [config][gcc 3.4.2] Request for test about functiontemplate ordering
JOAQUIN LOPEZ MU?Z wrote:
Hi, I've got the hunch that GCC 3.4.2 (specifically, the mingw version) might have some problems with function template ordering. Could somebody with access to that compiler please run the code below and report the results? Many thanks in advance.
"bar-specific" for gcc 3.4.0, gcc 3.4.2, gcc 3.4.3, gcc 3.3.5, gcc 3.2.3, gcc 3.1 on Linux.
Hi Martin. Well, seems my snippet does not capture the problem, but defiintely there's some difference wrt function template ordering handling between GCC 3.3.x and GCC 3.3.4: the issue is shown here: http://tinyurl.com/3nkgw (GCC 3.4.3 on your regression machine) This is a test for serialization capabilities of Boost.MultiIndex, and it works for GCC <3.4.x. In GCC 3.4.4, hoeever, a user-provided overload of boost::serialization::load_construct_data is not picked up. I guess you have the current CVS downloaded at your machine, since you're publishing regressions. Could you please do me a favor? If so, please define BOOST_NO_FUNCTION_TEMPLATE_ORDERING and rerun Boost.MultiIndex test_serialization for GCC 3.4.4. Boost.Serialization has some machinery to overcome fto problems. Thanks! Joaquín M López Muñoz Telefónica, Investigación y Desarrollo

JOAQUIN LOPEZ MU?Z wrote:
Hi Martin. Well, seems my snippet does not capture the problem, but defiintely there's some difference wrt function template ordering handling between GCC 3.3.x and GCC 3.3.4: the issue is shown here:
http://tinyurl.com/3nkgw (GCC 3.4.3 on your regression machine)
This is a test for serialization capabilities of Boost.MultiIndex, and it works for GCC <3.4.x. In GCC 3.4.4, hoeever, a user-provided overload of boost::serialization::load_construct_data is not picked up.
It's probably two-phase lookup related; have you tried putting the user overload in the user class' namespace, where it belongs? Don't automatically jump to conclusions that partial ordering is broken; more often than not, it is the code that is broken.

This is an issue regading two-phase lookup which was implemented for the first time in gcc 3.4+ Its discussed in the serialization documentation under "Namespaces for free function overrides" Robert Ramey JOAQUIN LOPEZ MU?Z wrote:
----- Mensaje original ----- De: Martin Wille <mw8329@yahoo.com.au> Fecha: Sábado, Diciembre 18, 2004 10:10 pm Asunto: Re: [boost] [config][gcc 3.4.2] Request for test about functiontemplate ordering
JOAQUIN LOPEZ MU?Z wrote:
Hi, I've got the hunch that GCC 3.4.2 (specifically, the mingw version) might have some problems with function template ordering. Could somebody with access to that compiler please run the code below and report the results? Many thanks in advance.
"bar-specific" for gcc 3.4.0, gcc 3.4.2, gcc 3.4.3, gcc 3.3.5, gcc 3.2.3, gcc 3.1 on Linux.
Hi Martin. Well, seems my snippet does not capture the problem, but defiintely there's some difference wrt function template ordering handling between GCC 3.3.x and GCC 3.3.4: the issue is shown here:
http://tinyurl.com/3nkgw (GCC 3.4.3 on your regression machine)
This is a test for serialization capabilities of Boost.MultiIndex, and it works for GCC <3.4.x. In GCC 3.4.4, hoeever, a user-provided overload of boost::serialization::load_construct_data is not picked up.
I guess you have the current CVS downloaded at your machine, since you're publishing regressions. Could you please do me a favor? If so, please define BOOST_NO_FUNCTION_TEMPLATE_ORDERING and rerun Boost.MultiIndex test_serialization for GCC 3.4.4. Boost.Serialization has some machinery to overcome fto problems.
Thanks!
Joaquín M López Muñoz Telefónica, Investigación y Desarrollo
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Robert Ramey <ramey <at> rrsd.com> writes:
This is an issue regading two-phase lookup which was implemented for the first time in gcc 3.4+
Its discussed in the serialization documentation under "Namespaces for free function overrides"
Robert Ramey
Robert, regarding this issue, I've taken a look at your collections_load_imp.hpp file, and line 71 caught my eye: template<class Archive, class T> struct stack_construct : public stack_allocate<T> { stack_construct(Archive & ar){ // note borland emits a no-op without the explicit namespace boost::serialization::load_construct_data(ar, this->address(), 0U); } ~stack_construct(){ this->address()->~T(); // undo load_construct_data above } }; Shouldn't you be using load_construct_data_adl? Same thing in collections_save_imp.hpp Joaquín M López Muñoz Telefónica, Investigación y Desarrollo.

http://tinyurl.com/3nkgw (GCC 3.4.3 on your regression machine)
This is a test for serialization capabilities of Boost.MultiIndex, and it works for GCC <3.4.x. In GCC 3.4.4, hoeever, a user-provided overload of boost::serialization::load_construct_data is not picked up.
I guess you have the current CVS downloaded at your machine, since you're publishing regressions. Could you please do me a favor? If so, please define BOOST_NO_FUNCTION_TEMPLATE_ORDERING and rerun Boost.MultiIndex test_serialization for GCC 3.4.4. Boost.Serialization has some machinery to overcome fto problems.
I feel a bit confused now. There is no gcc 3.4.4, do you mean 3.4.3? Regards, m
participants (5)
-
JOAQUIN LOPEZ MU?Z
-
Joaquin M Lopez Munoz
-
Martin Wille
-
Peter Dimov
-
Robert Ramey