为什么std :: bind需要复制构造函数?

时间:2019-02-02 16:49:22

标签: c++ constructor std bind ref

我实现了一些没有复制构造函数的类:

class SomeClass{
public:
    SomeClass() = default;
    SomeClass(const SomeClass&) = delete;
    SomeClass& operator=(const SomeClass&) = delete;
};

此外,我有一个函数,它将是std :: bind参数:

void function(SomeClass& object){
    //some code...
}

在main()函数中,创建SomeClass类型的 x 变量,通过该变量可以将函数的签名更改为void():

int main() {    
   SomeClass x;
   auto newFunc = std::bind(function,x);
}

问题是-为什么不起作用? 即为什么std :: bind需要复制构造函数? 如果我将其更改为:

 int main() {       
       SomeClass x;
       auto newFunc = std::bind(function,std::ref(x));
    }

那行得通。

0 个答案:

没有答案