title: Why does std::bind demand a copy constructor?
body: <p>I implemented some class without a copy constructor:</p>
  
  <pre><code>class SomeClass{
  public:
      SomeClass() = default;
      SomeClass(const SomeClass&amp;) = delete;
      SomeClass&amp; operator=(const SomeClass&amp;) = delete;
  };
  </code></pre>
  
  <p>In addition, I have a <strong>function</strong> which will be the std::bind argument:</p>
  
  <pre><code>void function(SomeClass&amp; object){
      //some code...
  }
  </code></pre>
  
  <p>In the main( ) function I create <strong>x</strong> variable of type SomeClass, with which I can change the signature of the <strong>function</strong> to void ( ):</p>
  
  <pre><code>int main() {    
     SomeClass x;
     auto newFunc = std::bind(function,x);
  }
  </code></pre>
  
  <p>The question is - Why doesn't it work?
  i.e. Why does std::bind need the copy constructor?
  If I changed it to :</p>
  
  <pre><code> int main() {       
         SomeClass x;
         auto newFunc = std::bind(function,std::ref(x));
      }
  </code></pre>
  
  <p>It would work.</p>