title: No appropriate default constructor available
body: <p>I'm getting the following error in my C++ program:</p>
  
  <pre><code>1&gt;          c:\users\thom\documents\cworkspace\barnaby\barnaby\timezone.cpp(14) : see reference to class template instantiation 'std::map&lt;_Kty,_Ty&gt;' being compiled
  </code></pre>
  
  <p>This is down a bit in the error stack but points to this line of code:</p>
  
  <pre><code>static std::map&lt;const std::string, Timezone&gt;    timezoneMap;
  </code></pre>
  
  <p>The reason is that Timezone has a rather elaborate constructor, but no default constructor. Here's that part of the error:</p>
  
  <pre><code>c:\program files\microsoft visual studio 10.0\vc\include\map(215): error C2512: 'Timezone::Timezone' : no appropriate default constructor available
  </code></pre>
  
  <p>1>          c:\program files\microsoft visual studio 10.0\vc\include\map(210) : while compiling class template member function 'Timezone &amp;std::map&lt;_Kty,_Ty>::operator [](const std::basic_string&lt;_Elem,_Traits,_Ax> &amp;)'</p>
  
  <p>My question is, why? Why is the map trying to construct a Timezone object? Why should it need too if I always put fully formed objects into my map? Especially, why this error when I initialize the map?</p>