Merge pull request #33 from ros2/function-traits-lambda
Added support for lambdas
This commit is contained in:
commit
198b40a0bf
1 changed files with 14 additions and 2 deletions
|
@ -47,9 +47,16 @@ class Executor;
|
|||
namespace node
|
||||
{
|
||||
|
||||
// TODO: add support for functors, std::function, lambdas and object members
|
||||
template<typename FunctionT>
|
||||
struct function_traits;
|
||||
struct function_traits
|
||||
{
|
||||
static constexpr std::size_t arity =
|
||||
function_traits<decltype( & FunctionT::operator())>::arity - 1;
|
||||
|
||||
template<std::size_t N>
|
||||
using argument_type =
|
||||
typename function_traits<decltype( & FunctionT::operator())>::template argument_type<N + 1>;
|
||||
};
|
||||
|
||||
template<typename ReturnTypeT, typename ... Args>
|
||||
struct function_traits<ReturnTypeT(Args ...)>
|
||||
|
@ -64,6 +71,11 @@ template<typename ReturnTypeT, typename ... Args>
|
|||
struct function_traits<ReturnTypeT (*)(Args ...)>: public function_traits<ReturnTypeT(Args ...)>
|
||||
{};
|
||||
|
||||
template<typename ClassT, typename ReturnTypeT, typename ... Args>
|
||||
struct function_traits<ReturnTypeT (ClassT::*)(Args ...) const>
|
||||
: public function_traits<ReturnTypeT(ClassT &, Args ...)>
|
||||
{};
|
||||
|
||||
/* ROS Node Interface.
|
||||
*
|
||||
* This is the single point of entry for creating publishers and subscribers.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue