Added support for lambdas
This commit is contained in:
parent
150facd1ec
commit
949ef5d1dc
1 changed files with 14 additions and 2 deletions
|
@ -47,9 +47,16 @@ class Executor;
|
||||||
namespace node
|
namespace node
|
||||||
{
|
{
|
||||||
|
|
||||||
// TODO: add support for functors, std::function, lambdas and object members
|
|
||||||
template<typename FunctionT>
|
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>
|
template<typename ReturnTypeT, typename ... Args>
|
||||||
struct function_traits<ReturnTypeT(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 ...)>
|
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.
|
/* ROS Node Interface.
|
||||||
*
|
*
|
||||||
* This is the single point of entry for creating publishers and subscribers.
|
* This is the single point of entry for creating publishers and subscribers.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue