Boost logo

Boost :

From: Marco (mrcekets_at_[hidden])
Date: 2007-10-13 18:47:08


On Sat, 13 Oct 2007 16:38:36 +0200, Marco Costalba <mcostalba_at_[hidden]>
wrote:

> 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
>

I didn't succeed in guessing what's wrong, I'll try to get
the specific compiler and to perform a pool of tests.

>
> 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

Truly a strange behaviour. Anyway I changed -1 to UINT_MAX .

Marco

-- 
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/

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