title: Why does C++ require a user-provided default constructor to default-construct a const object?
body: <p>The C++ standard (section 8.5) says:</p>
  
  <blockquote>
    <p>If a program calls for the default initialization of an object of a const-qualified type T, T shall be a class type with a user-provided default constructor.</p>
  </blockquote>
  
  <p>Why? I can't think of any reason why a user-provided constructor is required in this case.</p>
  
  <pre><code>struct B{
    B():x(42){}
    int doSomeStuff() const{return x;}
    int x;
  };
  
  struct A{
    A(){}//other than "because the standard says so", why is this line required?
  
    B b;//not required for this example, just to illustrate
        //how this situation isn't totally useless
  };
  
  int main(){
    const A a;
  }
  </code></pre>