Boost logo

Boost :

From: Marco Costalba (mcostalba_at_[hidden])
Date: 2007-10-13 10:38:36


On 10/13/07, Marco <mrcekets_at_[hidden]> wrote:
>
> > P.S: In case you are wondering "why didn't he tried?" is that I had
> > some compiler error (probably SFINAE related) and didn't had the time
> > to dig it more.
>
> That sounds odd to me I used only partial template specialization and
> just one enable_if in all my code.
> What compiler are you using ?
>

This is the compiler (under Windows):

gcc (GCC) 3.4.2 (mingw-special)

And this is the error log:

In file included from boost/overload/detail/overload_base.hpp:14,
                 from boost/overload/overload_impl.hpp:12,
                 from boost/overload/overload.hpp:18,
                 from test.cpp:10:
boost/overload/detail/final_overload_base.hpp:23: warning: converting
of negative value `-0x000000001' to `unsigned int'
In file included from test.cpp:21:
boost/overload/overload_impl.hpp: In instantiation of
`boost::overloads::overload<void ()(std::string, std::string,
std::string), int ()(bar1*, char), double ()(const bar2*, int, char),
char ()(std::string), int ()(char), double ()(int, char),
boost::overloads::detail::no_signature,
boost::overloads::detail::no_signature,
boost::overloads::detail::no_signature,
boost::overloads::detail::no_signature>':
boost/overload/detail/trait_by_index.hpp:23: instantiated from
`boost::overloads::detail::extent<test01::overload_type>'
test/test_trait_by_index.hpp:11: instantiated from here
boost/overload/overload_impl.hpp:47: error: incomplete type
`boost::overloads::detail::extent<test01::overload_type>' used in
nested name specifier
In file included from test.cpp:23:
boost/overload/detail/functor_has_signature.hpp: In instantiation of
`boost::overloads::detail::func_obj_has_signature<f6_t, double
()(float, float), boost::overloads::detail::member_func_const_tag>':
boost/overload/detail/functor_has_signature.hpp:107: instantiated
from `boost::overloads::detail::functor_has_signature<f6_t, double
()(float, float), boost::detail::function::function_obj_tag>'
test/test_trait_by_functor.hpp:12: instantiated from here
boost/overload/detail/functor_has_signature.hpp:52: error: incomplete
type `boost::overloads::detail::func_obj_has_signature_impl<double
(foo6::*)(float, float) const>' used in nested name specifier
boost/overload/detail/functor_has_signature.hpp: In instantiation of
`boost::overloads::detail::func_obj_has_signature<f6_t, double
()(float, float), void>':
boost/overload/detail/functor_has_signature.hpp:107: instantiated
from `boost::overloads::detail::functor_has_signature<f6_t, double
()(float, float), boost::detail::function::function_obj_tag>'
test/test_trait_by_functor.hpp:12: instantiated from here
boost/overload/detail/functor_has_signature.hpp:42: error: incomplete
type `boost::overloads::detail::func_obj_has_signature_impl<double
(foo6::*)(float, float)>' used in nested name specifier

It compiles and works flawlessy with gcc 4.2.2 under Linux.

Interesting enough the obviously "warnable" line in final_overload_base.hpp

static const unsigned int index = -1;

is warned only with gcc 3.4, not with the newer gcc 4.2 also if
-pedantic is given.

Marco


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk