Since C++11, because of several reasons, developers tend to use smart pointer classes for dynamic lifetime objects. And with those new smart pointer classes, standards, even
You can't. make_shared forwards the provided arguments to the constructor of type T. It is used for the simple case when you want the default deleter.
make_shared
T