Is there any keyword to redefine "all" methods of templated base class in a templated derived class?
<p>I know this looks like a silly question, but using object oriented stuff with templates in C++ is really troublesome.
For example, Foo is the base class:</p>

<pre><code>template &lt;typename T&gt;
class Foo {
  public:
    virtual void Method1() { }
    virtual void Method1(int a) { }
    virtual void Method2() { }
    virtual void Method2(int a) { }
    //... lots of other methods
};
</code></pre>

<p>Is there something like:</p>

<pre><code>template &lt;typename T&gt;
class Bar : public Foo&lt;T&gt; {
  public:
    using Foo&lt;T&gt;::*; //redefine all inherited methods from Foo
    virtual void Method1(int a) { }
    virtual void Method2(int a) { }
    //other methods overloading..
};
</code></pre>

<p>Instead of:</p>

<pre><code>template &lt;typename T&gt;
class Bar : public Foo&lt;T&gt; {
  public:
    using Foo&lt;T&gt;::Method1
    using Foo&lt;T&gt;::Method2
    //... lots of other methods

    virtual void Method1(int a) { }
    virtual void Method2(int a) { }
    //other methods overloading..
};
</code></pre>

<p>So we can do:</p>

<pre><code>int main() {
  Bar&lt;int&gt; b;
  b.Method1();
  b.Method2();
  //... lots of other methods

  //This obviously works without the 'using' keyword:
  Foo&lt;int&gt;* f = &amp;b;
  f-&gt;Method1();
  f-&gt;Method2();
  //etc
  return 0;
}
</code></pre>
