title: C++11 Garbage Collector - Why and Hows
body: <p>In <a href="http://gcc.gnu.org/projects/cxx0x.html" rel="noreferrer">C++11's language feature list</a> there is: </p>
  
  <blockquote>
    <p>Minimal support for garbage collection and reachability-based leak
    detection</p>
  </blockquote>
  
  <p>(but it seems not implemented in either GCC and Clang.)</p>
  
  <p>Why the standard committee introduced this garbage collection C++ langauge feature?</p>
  
  <p>Does C++ really need a GC? Isn't RAII such an excellent pattern (that can be used uniformly for both memory and non-memory resources, like sockets, files, textures...)?</p>
  
  <p>Will a GC break the uniformity of C++ code pattern that uses RAII?</p>
  
  <p>Some people say that a GC can come in handy to break circular dependencies, but isn't it just OK to use smart pointers like <code>weak_ptr</code> for this purpose?</p>
  
  <p>And what happens in case of exceptions thrown? How will the stack unwind semantics be modified to take a GC into consideration?</p>
  
  <p>And will a C#-like <code>IDisposable</code> pattern be introduced as well?</p>
  
  <p>Moreover, assuming that a GC is introduced in C++, will the pointer syntax be different? e.g. Will we have some hat-like "pointers" <code>^</code> like in C++/CLI or C++/CX extensions? There should be a way to differentiate from ordinary raw pointers vs. "managed" pointers, right?</p>