title: Does specifying constexpr on constructor automatically makes all objects created from it to be constexpr?
body: <p>Here is my code:</p>
  
  <pre><code>class test{
      public:
      constexpr test(){
  
      }
  
      constexpr int operator+(const test&amp; rhs){
          return 1;
      }
  };
  
  
  
  int main(){
  
      test t;                         //constexpr word isn't necessary
      constexpr int b = t+test();     // works at compile time!
  
  
      int w = 10;                     // ERROR constexpr required
      constexpr int c = w + 2;        // Requires w to be constexpr
      return 0;
  }
  </code></pre>
  
  <p>I notice that it worked even though I didn't specify test to be <code>constexpr</code>. I tried replicating the result by doing the same with <code>int</code> but i get errors. Specifically, it wants my <code>int w</code> inside the <code>constexpr int c = w + 2;</code> to be <code>constexpr</code>. From my first attempt which is using <code>test</code>, Did it work because of the reason that i used <code>constexpr</code> on the constructor already? If that is the case then would it good to assume that all classes that have <code>constexpr</code> on their constructors will result to all objects instantiated or created with it to be <code>constexpr</code>?</p>
  
  <p>Bonus question:</p>
  
  <p>If I have a <code>constexpr</code> constructor, is it bad to do something like ? <code>test * t = new test();</code> ?  </p>