From: Kefu Chai Date: Fri, 26 Feb 2021 01:38:26 +0000 (+0800) Subject: ceph-kvstore-tool: define a noexcept non-default ctor for Deleter X-Git-Tag: v12.2.14~3^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b12efe267b566a37862ed2b916f0e4218ff89bc6;p=ceph.git 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 --- 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) {