On Mon, Mar 25, 2013 at 12:22 PM, Nevin Liber <nevin@eviloverlord.com> wrote:
On 22 March 2013 08:15, TONGARI <tongari95@gmail.com> wrote:


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.

- Jeff