title: Meaning of error converting brace enclosed initializer list to type?
body: <p>I'm trying to port/build g++ to run on my system, and running into the following error while building libstdc++:</p>
  
  <blockquote>
    <p>.../gcc-4.6.2/i686-pc-linux-gnu/libstdc++-v3/include/mutex:226:50: error: could not convert '{0}' from '<code>&lt;brace-enclosed initializer list&gt;</code>' to '<code>std::timed_mutex::__native_type {aka pthread_mutex_t}</code>'</p>
  </blockquote>
  
  <p>The relevant code in <code>include/mutex</code> is:</p>
  
  <pre><code>class timed_mutex
  {
      // ...
      __native_type  _M_mutex;
      // ...
      timed_mutex() : _M_mutex(__GTHREAD_MUTEX_INIT) { }  // Line 226
      // ...
  }
  </code></pre>
  
  <p><code>__native_type</code> is <code>pthread_mutex_t</code> and <code>__GTHREAD_MUTEX_INIT</code> expands to <code>{0}</code>.</p>
  
  <p>I'm not very familiar at all with C++, just C, but I can't see anything obviously wrong here. What does the error mean?</p>