Boost logo

Boost Users :

Subject: Re: [Boost-users] [FunctionTypes] Testing for a general callable type.
From: TONGARI (tongari95_at_[hidden])
Date: 2013-03-25 21:27:46


2013/3/26 Jeffrey Lee Hellrung, Jr. <jeffrey.hellrung_at_[hidden]>

> On Mon, Mar 25, 2013 at 12:22 PM, Nevin Liber <nevin_at_[hidden]>wrote:
>
>> On 22 March 2013 08:15, TONGARI <tongari95_at_[hidden]> wrote:
>>
>>>
>>> https://github.com/jamboree/boost.has_call
>>>
>>
>> It doesn't seem to work with default arguments. :-(
>>
>> Here is my test case (under gcc 4.7.2 -std=c++0x):
>>
>> #include "boost/type_traits/has_call.hpp"
>> #include <cassert>
>>
>> template<typename Sig, typename F>
>> bool HasCall(F const&)
>> { return boost::has_call<F, Sig>::value; }
>>
>> void DefaultVal(int = 0) {}
>>
>> int main()
>> {
>> assert(HasCall<void()>(DefaultVal));
>> }
>>
>
> That's because the type of DefaultVal is void ( int ). Function types
> cannot encode the default'ness of parameters.
>

Yes. Instead, the following works:

    struct F
    {
        void operator()(int = 0){}
    };

    ...

    assert(HasCall<void()>(F()));



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net