title: Is it possible to forward declare a typedef that is within a namespace?
body: <p>I've looked around and I can't quite tell if the other similar questions answer this or not.</p>
  
  <pre><code>// lib.h
  namespace lib_namespace
  {
    struct lib_struct
    {
      typedef std::vector&lt;LibObject&gt; struct_value;
    };
  
    typedef lib_struct::struct_value lib_value; // compiler points here
  };
  
  // my.h
  // attempt at forward declaration
  namespace lib_namespace { class lib_value; };
  ...
  
  // my.cpp
  #include "lib.h"
  </code></pre>
  
  <p>I get a redefinition compiler error which is understandable, but is there a way to forward declare that typedef?  </p>
  
  <p>My intent is to avoid adding lib.h as a dependency outside of the library I'm making.  Perhaps there's a better way to achieve that?</p>
  
  <p>Edit:  To clarify, I'm trying to avoid adding an additional include directories line to all the project files that would use the library I'm creating because of the third party library I'm using and the above situation is where I'm stuck.  So it's OK if I include <code>lib.h</code> in <code>my.cpp</code>, but not <code>my.h</code>.</p>