title: error: operator=() does not handle self-assignment properly
body: <p>I am running <code>clang-tidy</code> on the code below:</p>
  <pre><code>BinaryTree&amp; operator=(const BinaryTree &amp;bt){ 
      if(this == &amp;bt){ 
          return *this;
      } 
      if(_root != nullptr) { 
          delete _root; 
      } 
      _root = new node(nullptr, bt._root-&gt;_data); 
      copy_con(_root, bt._root); 
      return *this; 
  }
  </code></pre>
  <p>It gives the following error:</p>
  <pre><code>Error: operator=() does not handle self-assignment properly.
  </code></pre>
  <p>This is strange, since my code does handle self-assignment in the first line!</p>
  <p>How can I fix this?</p>