Prefer bind over method call in lambda
This reduces a layer of indirection since the function can be called
directly instead of indirectly accessing it with the lambda. It also
makes the instantiation more flexible since it can match callbacks with
extra arguments.
Tested:
Built and run through unit tests.
Change-Id: I5317203fa70c027c5e774ed6192952058e35bd81
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/control/zone.cpp b/control/zone.cpp
index 1ca0465..17ec5fc 100644
--- a/control/zone.cpp
+++ b/control/zone.cpp
@@ -14,6 +14,7 @@
* limitations under the License.
*/
#include <chrono>
+#include <functional>
#include <phosphor-logging/log.hpp>
#include <phosphor-logging/elog.hpp>
#include <phosphor-logging/elog-errors.hpp>
@@ -46,8 +47,8 @@
_defCeilingSpeed(std::get<fullSpeedPos>(def)),
_incDelay(std::get<incDelayPos>(def)),
_decInterval(std::get<decIntervalPos>(def)),
- _incTimer(event, [this](){ this->incTimerExpired(); }),
- _decTimer(event, [this](){ this->decTimerExpired(); }),
+ _incTimer(event, std::bind(&Zone::incTimerExpired, this)),
+ _decTimer(event, std::bind(&Zone::decTimerExpired, this)),
_eventLoop(event)
{
auto& fanDefs = std::get<fanListPos>(def);
diff --git a/monitor/tach_sensor.cpp b/monitor/tach_sensor.cpp
index de1affb..26ba3c9 100644
--- a/monitor/tach_sensor.cpp
+++ b/monitor/tach_sensor.cpp
@@ -14,6 +14,7 @@
* limitations under the License.
*/
#include <experimental/filesystem>
+#include <functional>
#include <phosphor-logging/log.hpp>
#include <phosphor-logging/elog.hpp>
#include "fan.hpp"
@@ -88,7 +89,7 @@
_offset(offset),
_timeout(timeout),
_timerMode(TimerMode::func),
- _timer(event, [this, &fan](){ fan.timerExpired(*this); })
+ _timer(event, std::bind(&Fan::timerExpired, &fan, std::ref(*this)))
{
// Start from a known state of functional
setFunctional(true);