Skip to content

Commit

Permalink
Added support for lambdas
Browse files Browse the repository at this point in the history
  • Loading branch information
esteve authored and dirk-thomas committed May 18, 2015
1 parent 150facd commit 949ef5d
Showing 1 changed file with 14 additions and 2 deletions.
16 changes: 14 additions & 2 deletions rclcpp/include/rclcpp/node.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -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 ...)>
Expand All @@ -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.
Expand Down

0 comments on commit 949ef5d

Please sign in to comment.