title: I need something like "using Base::*;"
body: <p>If my base class has a function <code>func(int)</code> and my derived class has a function <code>func(double)</code>, the derived <code>func(double)</code> hides <code>base::func(int)</code>.  I can use <code>using</code> to bring the base version into the derive's list of overloads:</p>
  
  <pre><code>struct base
  {
     void func(int);
  };
  
  struct derived : base
  {
     using base::func;
     void func(double);
  }
  </code></pre>
  
  <p>OK, great.  But what if I'm not sure whether <code>base</code> has a <code>func()</code> or not?  ie because I am doing template metaprogramming, I'm not actually sure what <code>base</code> is, but I want to bring its functions up to the same level - if they exist.  ie change the above example to:</p>
  
  <pre><code>struct base_with
  {
     void func(int);
  };
  struct base_without
  {
  };
  
  template &lt;typename Base&gt;
  struct derived : Base
  {
     using Base::func;  // if Base has a func(), I want to bring it in
  
     void func(double);
  }
  
  derived&lt;base_with&gt; testwith; // compiles
  derived&lt;base_without&gt; testwithout;  // fails :-(
  </code></pre>
  
  <p>I need <code>using_if</code> like <code>boost::enable_if</code>.  Doesn't seem possible...</p>
  
  <p>Thanks in advance.</p>