# Extra Clang Tools 22.1.2 documentation

## clang-tidy - modernize-make-shared

# modernize-make-shared

This check finds the creation of `std::shared_ptr` objects by explicitly calling the constructor and a `new` expression, and replaces it with a call to `std::make_shared`.

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

    // becomes

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

This check also finds calls to `std::shared_ptr::reset()` with a `new` expression, and replaces it with a call to `std::make_shared`.

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

    // becomes

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

## Options

MakeSmartPtrFunction

  A string specifying the name of make-shared-ptr function. Default is std::make_shared.

MakeSmartPtrFunctionHeader

  A string specifying the corresponding header of make-shared-ptr function. Default is <memory>.

IncludeStyle

  A string specifying which include-style is used, llvm or google. Default is llvm.

IgnoreMacros

  If set to true, the check will not give warnings inside macros. Default is true.

IgnoreDefaultInitialization

  If set to false, the check does not suggest edits that will transform default initialization into value initialization, as this can cause performance regressions. Default is true.