From d8ce06fc049f1b97426cb4e69decd6750d280f7f Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Wed, 1 Sep 2021 14:44:14 -0700 Subject: [PATCH] crimson/os/seastore/lba_manager/btree/lba_btree: fix FTBFS on gcc 9 gcc-9 doesn't seem to consider interator nothrow move constructible with the default move constructor implementation yielding the following build failure: m/el8/BUILD/ceph-17.0.0-7373-gfc349212/src/seastar/include/seastar/core/future.hh:584:58: error: static assertion failed: Types must be no-throw move constructible 584 | static_assert(std::is_nothrow_move_constructible::value, Signed-off-by: Samuel Just --- src/crimson/os/seastore/lba_manager/btree/lba_btree.h | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/crimson/os/seastore/lba_manager/btree/lba_btree.h b/src/crimson/os/seastore/lba_manager/btree/lba_btree.h index 94e6c736b9b9f..a822b6dde0413 100644 --- a/src/crimson/os/seastore/lba_manager/btree/lba_btree.h +++ b/src/crimson/os/seastore/lba_manager/btree/lba_btree.h @@ -29,8 +29,11 @@ public: class iterator { public: - iterator(const iterator &) noexcept = default; - iterator(iterator &&) noexcept = default; + iterator(const iterator &rhs) noexcept : + internal(rhs.internal), leaf(rhs.leaf) {} + iterator(iterator &&rhs) noexcept : + internal(std::move(rhs.internal)), leaf(std::move(rhs.leaf)) {} + iterator &operator=(const iterator &) = default; iterator &operator=(iterator &&) = default; @@ -102,8 +105,8 @@ public: } private: - iterator() = default; - iterator(depth_t depth) : internal(depth - 1) {} + iterator() noexcept {} + iterator(depth_t depth) noexcept : internal(depth - 1) {} friend class LBABtree; static constexpr uint16_t INVALID = std::numeric_limits::max(); -- 2.39.5