using make_shared<T>() is really not possible to access private and protected part of the class, to access these parts of the class you will either:
1. either you can make a function in the singleton class that will let you access the instance of the class, or
2. make a class which manages the creation of the singleton class and make it a friend the class from there you could use the std::shared_ptr<T>(arg) for creating your new objects of the your class