src: prevent extra copies of `TimerWrap::TimerCb`
I noticed that we were taking TimerCb
as a const&
and then copying
that into the member. This is completely fine when the constructor is
called with an lvalue. However, when called with an rvalue, we can allow
the std::function
to be moved into the member instead of falling back
to a copy, so I changed the constructors to take in universal
references. Also, std::function
constructors can take in multiple
arguments, so I further modified the constructors to use variadic
templates.
Signed-off-by: Darshan Sen darshan.sen@postman.com