title: `is_trivially_destructible` does not work with inherited class
body: <pre><code>#include &lt;iostream&gt;
  using namespace std;
  
  
      class NoConstructOperation
      {
      protected:
          NoConstructOperation() = default;
          virtual ~NoConstructOperation() = default;
      public:
          NoConstructOperation(const NoConstructOperation&amp;) = delete;
          NoConstructOperation&amp; operator =(NoConstructOperation&amp;) = delete;
          NoConstructOperation(NoConstructOperation&amp;&amp;) = delete;
          NoConstructOperation&amp; operator = (NoConstructOperation&amp;&amp;) = delete;
      };
  
  class Myclass:public NoConstructOperation
  {
  
  };
  
  
  int main() {
      static_assert(!std::is_trivially_destructible&lt;Myclass&gt;::value, "Compiler provided destructor is public: Please declare it private");
      return 0;
  }  
  </code></pre>
  
  <p>If I do not inherit <code>Myclass</code> with <code>NoConstructOperation</code> above code gives compilation error with static assert.<br>
    But if I inherit <code>Myclass</code> with <code>NoConstructOperation</code> <code>is_trivially_destructible</code> check does not work, even though <code>Myclass</code> constructor is public. This code compiles , <strong>what is the reason</strong>?  </p>