Fix: waiter: use std::reference_wrapper instead of a raw reference
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 22 Mar 2024 15:46:36 +0000 (11:46 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 22 Mar 2024 18:25:11 +0000 (14:25 -0400)
commitac8791840c1815f10336210b4c0d7046eb515692
treeccf7fecff4e06d501f6c088c71deb01d003d402c
parent0729ea5558053d5a1a0d7aea51febf63ee1f3b3f
Fix: waiter: use std::reference_wrapper instead of a raw reference

clang-tidy warns that
  /home/jgalar/EfficiOS/src/lttng-tools/src/common/waiter.hpp:32:9: warning: use '= default' to define a trivial copy-assignment operator [modernize-use-equals-default]

The warning itself is bogus since it is not possible to use the default
copy-assignment operator in this case. Indeed, _state being a reference,
it cannot be rebound after its initialization. The compiler will refuse
to generate a default implementation as it would be ill-formed.

However, this does highlight a problem in the implementation, namely
that the explicit assignment operator does attempt to re-assign _state.

Switching the _state reference to use std::reference_wrapper does make
it legal to re-bind the reference to a different object.

Having the ability to assign a waker is conceptually a bit strange (vs
obtaining another instance from the waiter) and should probably be
disabled, but it is required for the moment as one the of use in a huge
C structure that gets copied using by assignment.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Change-Id: I6f4c740244decb50426ec0571aaea754edaea6a5
src/common/waiter.cpp
src/common/waiter.hpp
This page took 0.032294 seconds and 4 git commands to generate.