make_unique如何将复杂类型作为ctor参数传递?

时间:2018-05-03 16:14:02

标签: c++ smart-pointers unique-ptr

鉴于以下代码:

MyClass::MyClass(std::tuple<int, int> param)
    : mytuple(param){}

tuple<int, int> mt = { 1,2 };
auto myClass = make_unique<MyClass>(mt); // ok
auto myClass1 = make_unique<MyClass>({1,2}); // error
auto myClass01 = make_unique<MyClass>(make_tuple(1,2)); // ok
unique_ptr<MyClass> Myclass2(new MyClass({ 1,2 })); // ok

我收到错误:

  

错误C2660&#39; std :: make_unique&#39;:函数不带1个参数

     

错误(有效)E0304没有重载功能的实例&#34; make_unique&#34;   匹配参数列表

为什么会这样,我应该怎么做?

0 个答案:

没有答案