title: Inheriting constructors vs forwarding
body: <p>C++11 allows inheriting constructors making it possible to avoid a lot of boilerplate, especially with something like a wrapper class. However, it seems like you could already achieve this functionality with variadic templates alone.</p>
  
  <pre><code>class B
  {
  public:
   B(int){//do something}
   B(int, char){//do something}
  };
  </code></pre>
  
  <p>Using inheriting constructors:</p>
  
  <pre><code>class D : public B
  {
  public:
   using B::B; 
  };
  </code></pre>
  
  <p>Using variadic templates and forward:</p>
  
  <pre><code>class D : public B
  {
  public:
   template &lt;typename...Args&gt;
   D(Args&amp;&amp;... args) : B(std::forward&lt;Args&gt;(args)...)
   {
   }
  };
  </code></pre>
  
  <p>While consistency(treat constructors and methods the same way for <code>using</code>) and ease of use are very good reasons to bring inherited constructors into the language, is there any other reason why the first solution should be preferred to the second? Both the CWG documents(<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1890.pdf" rel="nofollow">N1890</a> and <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1898.pdf" rel="nofollow">N1898</a>) I found discussing inheriting constructors simply note the following and move on:</p>
  
  <blockquote>
    <p>Little more than a historical accident prevents using this to work for a constructor as well
    as for an ordinary member function. Had a constructor been called “ctor” or “constructor”
    rather than being referred to by the name of their class, this would have worked. We
    propose this as the mechanism for inheriting constructors.</p>
  </blockquote>