小编Kur*_*erg的帖子

为什么std :: make_shared <class T,class ... Args>(Args && ... args)要求T有复制构造函数?

我不明白为什么一个具有已删除的复制构造函数的类(或包含成员,如ifstream,具有已删除的复制构造函数,并且它也具有已删除的复制构造函数)的类不能与make_shared()一起使用?这段代码显示了我在说什么

class X {
 private:
     X(const X&) = delete;
     int x;
 public:
     X(int an_int)  : x{an_int} {};
     X() : x{10} {}
 };
int main(int argc, char** argv) 
{
   // fails because X has no copy constructor 
   shared_ptr<X> ptr { make_shared<X>( X{8} ) };

   shared_ptr<X> ptr2 { new X{10} };// works fine

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

make-shared c++11

1
推荐指数
1
解决办法
109
查看次数

标签 统计

c++11 ×1

make-shared ×1