title: c++ forward declaration for a non-class typedef
body: <p>I have this:</p>
  
  <pre><code>//forward declaration of Foo &lt;-- this is my question
  void doSome(Foo foo);
  
  typedef void* Foo; //Foo is defined later as void*
  
  void doSome(Foo foo)
  {
     //code here..
  }
  </code></pre>
  
  <p>How can I forward declare Foo in a way compatible with void*?</p>
  
  <p>This is an oversimplified example, of course is trivial here, but the idea is having multiple implementations, like this:</p>
  
  <pre><code>//forward declaration of Foo &lt;-- this is my question
  void doSome(Foo foo);
  
  //[implementation1_internal.h]
  typedef void* Foo; //Foo is defined later as void*
  
  void doSome(Foo foo)
  {
     //code here..
  }
  
  //[implementation2_internal.h]
  typedef int* Foo; //Foo is defined later as int*
  
  void doSome(Foo foo)
  {
     //code here..
  }
  </code></pre>
  
  <p>and select one of them using preprocessor directives. (This is irrelevant, just to show  the example is not just silly).</p>