我注意到make_shared()做了一些整洁的事情,我很奇怪这是如何工作的...... make_shared()复制并验证T的构造函数的参数列表。这是如何工作的?如何设计我自己的模板函数来复制和验证T的可用构造函数?
示例:
#include <memory>
#include <iostream>
#include <string>
using namespace std;
class Department
{
public:
string Name;
double Budget;
Department(const string& name, const double& budget);
};
Department::Department(const string& n, const double& b)
: Name(n), Budget(b)
{
cout << Name << " : " << Budget << endl;
}
int main()
{
shared_ptr<Department> d = make_shared<Department>("Human Resources", 1000.0);
// shared_ptr<Department> d = make_shared<Department>(); NOT VALID
return 0;
}
以上在make_shared()的编译时验证;使用参数const string&amp;和const double&amp ;.我怎么能在我自己的代码中模仿这种行为?