From d2cfc25494bbe60ef145508bd538a1ecd5865b47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Botond=20D=C3=A9nes?= Date: Tue, 29 Nov 2022 13:59:52 +0200 Subject: [PATCH] reader_permit: resource_units: remove noexcept qualifier from constructor It won't be noexcept soon. Also make it exception safe. --- reader_concurrency_semaphore.cc | 3 ++- reader_permit.hh | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/reader_concurrency_semaphore.cc b/reader_concurrency_semaphore.cc index bd3275e12e..6fc8739df8 100644 --- a/reader_concurrency_semaphore.cc +++ b/reader_concurrency_semaphore.cc @@ -26,9 +26,10 @@ std::ostream& operator<<(std::ostream& os , const reader_resources& r) { return os; } -reader_permit::resource_units::resource_units(reader_permit permit, reader_resources res) noexcept +reader_permit::resource_units::resource_units(reader_permit permit, reader_resources res) : _permit(std::move(permit)), _resources(res) { _permit.consume(res); + _resources = res; } reader_permit::resource_units::resource_units(resource_units&& o) noexcept diff --git a/reader_permit.hh b/reader_permit.hh index 4303cc328b..cbdb9a4c85 100644 --- a/reader_permit.hh +++ b/reader_permit.hh @@ -171,7 +171,8 @@ class reader_permit::resource_units { friend class reader_permit; friend class reader_concurrency_semaphore; private: - resource_units(reader_permit permit, reader_resources res) noexcept; + class already_consumed_tag {}; + resource_units(reader_permit permit, reader_resources res); public: resource_units(const resource_units&) = delete; resource_units(resource_units&&) noexcept;