Why is a default ctor needed for this inner (nested) struct?
<p>I am trying to compile code similar to the snippet below:</p>

<pre><code>class System
{
private:
   struct Configuration
   {
      Configuration(/*params*/);
      Configuration(const Configuration&amp;);
      Configuration&amp; operator=(const Configuration&amp;);
      ~Configuration();

      /* member variables */
   } m_config;

   explicit System(const Configuration&amp; cfg);

   // Non copyable constructable, non assignable
   System(const System&amp;);
   System&amp; operator= (const System&amp;);

public:
    System();
    ~System();  
}


//Implementation
System::System()
{
   m_config = Configuration(/*default params*/);
   // ....
}
</code></pre>

<p>Compiler error: <strong>no matching function for call to ‘System::Configuration::Configuration()’</strong></p>

<p>When I provide (even merely a declaration not a definition of) a default constructor for the nested struct, the error dissapears - WHY?!</p>

<p>Misc Details:
gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5)</p>
