在 C++ 中使用 shared_ptr 从 public 静态成员函数访问私有构造函数

Access private constructor from public static member function using shared_ptr in C++

考虑以下代码,我想将 A 对象的创建委托给名为 make 的方法,以便 class 的用户仅创建包装在 std::shared_ptr:

中的实例
#include <memory>

class A {
private:    
    A() {}

public:
    static std::shared_ptr<A> make() {
        return std::make_shared<A>();
    }
};

int main() {
    std::shared_ptr<A> a = A::make();
    return 0;
}

本来以为,因为make是成员函数,所以可以访问私有构造函数,但显然不是这样。编译程序失败并在 std::shared_ptr 的源中显示以下消息:

/usr/include/c++/8/ext/new_allocator.h:136:4: error: ‘A::A()’ is private within this context

我该如何解决这个问题?

class A {
private:
    A() {}

public:
    static std::shared_ptr<A> make() {
        return std::shared_ptr<A>(new A());
    }
};