modernize-make-shared

此检查会查找通过显式调用构造函数和 new 表达式来创建 std::shared_ptr 对象的情况,并将其替换为对 std::make_shared 的调用。

auto my_ptr = std::shared_ptr<MyPair>(new MyPair(1, 2));

// becomes

auto my_ptr = std::make_shared<MyPair>(1, 2);

此检查还会查找对 std::shared_ptr::reset() 的调用,其中使用 new 表达式,并将其替换为对 std::make_shared 的调用。

my_ptr.reset(new MyPair(1, 2));

// becomes

my_ptr = std::make_shared<MyPair>(1, 2);

选项

MakeSmartPtrFunction

一个字符串,指定 make-shared-ptr 函数的名称。默认值为 std::make_shared

MakeSmartPtrFunctionHeader

一个字符串,指定 make-shared-ptr 函数的对应头文件。默认值为 memory

IncludeStyle

一个字符串,指定使用的包含样式,llvmgoogle。默认值为 llvm

IgnoreMacros

如果设置为 true,则检查不会在宏内给出警告。默认值为 true

IgnoreDefaultInitialization

如果设置为非零值,则检查不会建议将默认初始化转换为值初始化的编辑,因为这会导致性能下降。默认值为 1