make_shared()は何かきちんとしたことをしていて、これはどういう仕組みですか... make_shared()はTのコンストラクタ。 これはどのように作動しますか?どのようにしてTのために利用可能なコンストラクタをコピーして検証する私自身のテンプレート関数を設計することが可能ですか?どうすれば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文字列&とconst double &を使用します。自分のコードでこの動作をどうやって模倣することができますか?
インスピレーションのために、関連するBoostヘッダーをご覧ください。 –
http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Variadic-Templates-are-Funadic – BoBTFish