我实现了一些没有复制构造函数的类:
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));
}
那行得通。