title: define or delete copy ctor in a helper class/struct that uses neither?
body: <p>I have the following helper utility class defined in a header:</p>
  <p><strong>Util.h</strong></p>
  <pre><code>struct Timer
  {
      std::chrono::time_point&lt; std::chrono::steady_clock &gt; start { std::chrono::steady_clock::now( ) };
      std::chrono::time_point&lt; std::chrono::steady_clock &gt; end;
  
      Timer( ) = default;
      ~Timer( )
      {
          end = std::chrono::steady_clock::now( );
          std::clog &lt;&lt; &quot;\nTimer took &quot; &lt;&lt; std::chrono::duration&lt; double, std::milli &gt;( end - start ).count( ) &lt;&lt; &quot; ms\n&quot;;
      }
  };
  </code></pre>
  <p>Any instance of this struct is used for measuring the execution time of any arbitrary scope (using RAII since the instance gets destroyed at the end of the scope).</p>
  <p>However, I don't use the copy/move operations of this struct.<br>
  And <em>SonarLint</em> shows a message: &quot;Explicitly define or delete the missing copy constructor and copy assignment operator so that they will not be implicitly provided...&quot;</p>
  <p>What's the best practice when it comes to such classes? Should I delete both with <code> = delete</code>? What will happen to move ctor and move operator? Should I also delete them cause I'm not using them right now? Should such a class be <em>non-copyable</em>, <em>non-movable</em>?</p>