Boost logo

Boost :

Subject: Re: [boost] [type_traits] type_traits for types with operator().
From: John Maddock (john_at_[hidden])
Date: 2014-01-29 12:28:47


> Recently I looked for type_traits for callable classes. It so strange, I
> didn't find such traits. Most likely, I just missed them or something like
> them.
>
> I actually don't know is there a real need for them. Anyway I tried to
> write such traits at least for practice and metaprogramming training. I
> tested them with gcc, clang and msvc2010. I would appreciate if you looked
> at the code. Here is the
> link<https://github.com/AntonBikineev/is_functional/> to
> my github repository.
>
> It's cool that they can see hidden generated operator() of lambdas closure
> type.

My apologies for not replying before Anton.

This looks cool. However what does it detect? Any operator() or nullary
operator()?

A better C++11 style interface *if* it can be implemented would be something
like:

template <class F, class Args...>
struct is_callable;

Which inherits from true_type only if F is callable with arguments Args...

The tricky part is creating a decent interface that can deal with both
lvalue and rvalue refs as arguments correctly.

Actually I was sure there was something similar in the C++11 std, but I
couldn't find anything.

Regards, John.


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