From b12efe267b566a37862ed2b916f0e4218ff89bc6 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Fri, 26 Feb 2021 09:38:26 +0800 Subject: [PATCH] ceph-kvstore-tool: define a noexcept non-default ctor for Deleter the deleter of a unique_ptr<> should be value-initialized if we use `unique_ptr()` for constructing the unique_ptr, but somehow, `Deleter` does have a user-defined constructor which prevents the compiler from creating a default constructor which could have made Deleter default constructible. in this change, a constructor accepts no arguments is explictly defined to satisfy the requirements for creating `db` using `unique_ptr<>()`. this change is not cherry-picked from master, as we don't define a constructor at all for Deleter, so it is *always* value-initialized. Signed-off-by: Kefu Chai --- src/tools/ceph_kvstore_tool.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/tools/ceph_kvstore_tool.cc b/src/tools/ceph_kvstore_tool.cc index ee7a3b7439b..fd7c9aefe17 100644 --- a/src/tools/ceph_kvstore_tool.cc +++ b/src/tools/ceph_kvstore_tool.cc @@ -39,8 +39,11 @@ class StoreTool #ifdef HAVE_LIBAIO struct Deleter { BlueStore *bluestore; - Deleter(BlueStore *store = nullptr) - : bluestore(store) + Deleter() + : bluestore(nullptr) + {} + Deleter(BlueStore *store) + : bluestore(store) {} void operator()(KeyValueDB *db) { if (bluestore) { -- 2.47.3