diff -ru overload.orig/boost/overload/detail/functor_has_signature.hpp overload/boost/overload/detail/functor_has_signature.hpp --- overload.orig/boost/overload/detail/functor_has_signature.hpp 2007-11-01 09:18:04.000000000 +0100 +++ overload/boost/overload/detail/functor_has_signature.hpp 2007-11-01 09:30:18.000000000 +0100 @@ -23,6 +23,7 @@ struct member_func_non_const_tag {}; +// g++-3.3: warning: all member functions in class are private template< typename FunctionObj, typename Sig, typename const_tag = member_func_non_const_tag > struct func_obj_has_signature @@ -44,6 +45,7 @@ struct member_func_const_tag {}; // for member functions of kind "R f(..) const" +// g++-3.3: warning: all member functions in class are private template struct func_obj_has_signature { @@ -51,6 +53,7 @@ typedef typename memb_func_trait::const_type memb_func_ptr; template struct helper; + // g++-3.3: internal compiler error: Segmentation :-)) template static char check(helper<&T::operator()>* ); template static char (& check(...))[2]; public: diff -ru overload.orig/boost/overload/overload_impl.hpp overload/boost/overload/overload_impl.hpp --- overload.orig/boost/overload/overload_impl.hpp 2007-11-01 09:18:04.000000000 +0100 +++ overload/boost/overload/overload_impl.hpp 2007-11-01 09:18:34.000000000 +0100 @@ -9,6 +9,8 @@ #ifndef _BOOST_OVERLOAD_IMPL_HPP_ #define _BOOST_OVERLOAD_IMPL_HPP_ +// TODO: Move *Impl file into detail!? + #include "detail/overload_base.hpp" #include "detail/trait_by_index.hpp" #include "detail/trait_by_signature.hpp" diff -ru overload.orig/README_FIRST.TXT overload/README_FIRST.TXT --- overload.orig/README_FIRST.TXT 2007-11-01 09:18:04.000000000 +0100 +++ overload/README_FIRST.TXT 2007-11-01 09:20:20.000000000 +0100 @@ -5,18 +5,18 @@ Copyright (c) 2007 Marco Cecchetti Use, modification and distribution of this library is -subject to the Boost Software License, Version 1.0 . -(See accompanying file LICENSE_1_0.txt or +subject to the Boost Software License, Version 1.0. +(See accompanying file LICENSE_1_0.txt (NOT FOUND IN ARCHIVE!) or copy at http://www.boost.org/LICENSE_1_0.txt) ================================================================= ================================================================= WARNING this library is a proof of concept implementation only, -and it comes without ABSOLUTELY ANY WARRANTY ! +and it comes without ABSOLUTELY ANY WARRANTY! ================================================================= -WARNING: at present Boost Overload IS NOT a Boost library ! +WARNING: at present Boost Overload IS NOT a Boost library! =========================================================== ================================================================= @@ -102,7 +102,7 @@ MS VC++ 7.1 under Windows fail -description +Description =========== I went on working on the second implementation only. The source code has gone through refactoring and modularization. @@ -146,7 +146,7 @@ tested on gcc 4.1.2 under Linux -description +Description =========== The archive includes two implementations. diff -ru overload.orig/test/test_free_and_member_overloaded_functions.hpp overload/test/test_free_and_member_overloaded_functions.hpp --- overload.orig/test/test_free_and_member_overloaded_functions.hpp 2007-11-01 09:18:04.000000000 +0100 +++ overload/test/test_free_and_member_overloaded_functions.hpp 2007-11-01 09:44:34.000000000 +0100 @@ -2,6 +2,9 @@ #ifndef _TEST_FREE_AND_MEMBER_OVERLOADED_FUNCTIONS_HPP_ #define _TEST_FREE_AND_MEMBER_OVERLOADED_FUNCTIONS_HPP_ +// missing includes such as +#include "boost/overload/overload.hpp" +// also for other header files in test/! void test07() { diff -ru overload.orig/test/test_signature_deduction.hpp overload/test/test_signature_deduction.hpp --- overload.orig/test/test_signature_deduction.hpp 2007-11-01 09:18:04.000000000 +0100 +++ overload/test/test_signature_deduction.hpp 2007-11-01 09:54:20.000000000 +0100 @@ -19,7 +19,7 @@ bar1 b1; bar2 b2; overload_type f(f4, f2); - f.set(f0, f5, f1, f3); + f.set(f0, f5, f1, f3); // leads also to the internal compiler error with g++ 3.3 f( "Hello", ", ", "world !" ); diff -ru overload.orig/test/test_trait_by_functor.hpp overload/test/test_trait_by_functor.hpp --- overload.orig/test/test_trait_by_functor.hpp 2007-11-01 09:18:04.000000000 +0100 +++ overload/test/test_trait_by_functor.hpp 2007-11-01 09:52:41.000000000 +0100 @@ -9,7 +9,10 @@ sig5_t, sig6_t, sig7_t, sig8_t, sig9_t> overload_type; +#if !(defined(__GNUC__) && __GNUC__ == 3 && __GNUC_MINOR__ == 3) +// Avoid an internal compiler error with g++ 3.3 BOOST_STATIC_ASSERT(( ovdtl::functor_has_signature::value )); +#endif } @@ -24,19 +27,25 @@ overload_type::base_type >::value )); +#if !(defined(__GNUC__) && __GNUC__ == 3 && __GNUC_MINOR__ == 3) +// Avoid an internal compiler error with g++ 3.3 BOOST_STATIC_ASSERT(( is_same::type >::type, sig5_t >::value )); +#endif BOOST_STATIC_ASSERT(( is_same::type, boost::function >::value )); BOOST_STATIC_ASSERT(( ovdtl::index_by_functor::value == 2 )); +#if !(defined(__GNUC__) && __GNUC__ == 3 && __GNUC_MINOR__ == 3) +// Avoid an internal compiler error with g++ 3.3 BOOST_STATIC_ASSERT(( ovdtl::has_functor_signature::value )); BOOST_STATIC_ASSERT(( !ovdtl::has_functor_signature::value )); +#endif }