title: Why doesn't perfect forwarding (catch-all) work to implement a copy-assignment?
body: <p>In a class with a series of ctors (most of which have exactly one argument), I want all one-argument ctors to also be mirrored by a corresponding assignment operator. The ctors include, but are not limited to a copy-ctor and a move-ctor. So this, should satisfy the rule-of-five.</p>
  
  <pre><code>  template &lt;typename T&gt;
    object&amp; operator=(T&amp;&amp; from) {
      // ...
      return *this;
    }
  </code></pre>
  
  <p>Here is a minimal example: <a href="https://ideone.com/OKprcr" rel="nofollow noreferrer">https://ideone.com/OKprcr</a> (thanks to @Daniel H for pointing out constness).</p>
  
  <p>The error I get is</p>
  
  <pre><code>error: object of type 'object' cannot be assigned because its copy assignment operator is implicitly deleted
  ...
  note: copy assignment operator is implicitly deleted because 'object' has a user-declared move constructor
  </code></pre>
  
  <p>Why doesn't the function template implement the copy-assignment operator?</p>