Boost logo

Boost :

Subject: Re: [boost] Discovering C++11 lambda argument and result types to construct boost::function
From: Mathias Gaunard (mathias.gaunard_at_[hidden])
Date: 2012-02-12 11:37:06


On 02/12/2012 05:15 PM, Mathias Gaunard wrote:
> On 02/09/2012 11:20 PM, Frank Birbacher wrote:
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA1
>>
>> Hi!
>>
>> On comp.lang.c++.moderated I talked to Daniel Krügler about how to
>> discover argument and result types from C++11 lambdas in a template
>> context. The thread has the title "How to discover argument and result
>> types from lambda for constructing std::function?"
>>
>> https://groups.google.com/d/topic/comp.lang.c++.moderated/qaMECIUlJp0/discussion
>>
>>
>> The task is to provide a function template "make_function" that takes
>> a C++11 lambda expression and returns a boost::function with the
>> correct signature to call the lambda. This may be extended to accept
>> any other callable type.
>>
>> Is there such a thing already in Boost? I'd like to add it. Would it
>> go to Boost.Function alone? Or would parts fit into TypeTraits? Does
>> Doug still maintain Boost.Function?
>
> I think you should just do a meta-function that gives the function type
> that matches a given lambda.

And that meta-function is just

template<class F>
struct function_type
   : remove_pointer<decltype(&F::operator())>
{
};


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