diff --git a/riegeli/base/maker.h b/riegeli/base/maker.h index 41397b1d..6618f8de 100644 --- a/riegeli/base/maker.h +++ b/riegeli/base/maker.h @@ -562,14 +562,16 @@ class MakerTypeForBase std::is_move_assignable>::value, int> = 0> friend void RiegeliReset(T& dest, MakerTypeForBase&& src) { - riegeli::Reset(dest, std::move(src.maker())); + riegeli::Reset(dest, std::move(src).maker()); } // Returns the corresponding `MakerType` which does not specify `T`. // // This is useful for handling `MakerType` and `MakerTypeFor` generically. - MakerType&& maker() && { return std::move(maker_); } + MakerType& maker() & { return maker_; } const MakerType& maker() const& { return maker_; } + MakerType&& maker() && { return std::move(maker_); } + const MakerType&& maker() const&& { return std::move(maker_); } private: ABSL_ATTRIBUTE_NO_UNIQUE_ADDRESS MakerType maker_;