Я реализовал некоторый класс без конструктора копирования:
class SomeClass{
public:
SomeClass() = default;
SomeClass(const SomeClass&) = delete;
SomeClass& operator=(const SomeClass&) = delete;
};
Кроме того, у меня есть функция , которая будет аргументом std :: bind:
void function(SomeClass& object){
//some code...
}
В функции main () я создаю x переменную типа SomeClass, с помощью которой я могу изменить сигнатуру функции на 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));
}
Это бы сработало.