title: Default Arguments vs Overloading?
body: <p>In <a href="http://www.open-std.org/JTC1/sc22/wg21/docs/papers/1992/WG21%201992/X3J16_92-0054%20WG21_N0131.pdf" rel="nofollow noreferrer">WG21 N0131</a> Bill Gibbons states:</p>
  <blockquote>
  <p>default arguments are often considered an anachronism because they can be replaced with overloaded functions</p>
  </blockquote>
  <p>I understand that a single function like:</p>
  <pre><code>void f(T t = t0, U u = u0);
  </code></pre>
  <p>can be replaced by the three overloads:</p>
  <pre><code>void f() { f(t0); }
  void f(T t) { f(t, u0); }
  void f(T t, U u);
  </code></pre>
  <p>but what I don't understand is why the latter should be preferred over the former?  (That is what he means by &quot;anachronism&quot;, right?)</p>
  <p>There's some related discussion in the Google styleguide here: <a href="https://google.github.io/styleguide/cppguide.html#Default_Arguments" rel="nofollow noreferrer">Google C++ Styleguide &gt; Default Arguments</a>, but I don't see how it answers the question or supports Gibbons claim.</p>
  <p>Anyone know what he's talking about?  Why are default arguments considered an anarchronism?</p>