title: Is it bad practice to overload a function to take both a pointer or a reference?
body: <p>For example, if I had a struct <code>FooSpec</code>:</p>
  
  <pre><code>struct FooSpec { /* lots of data */ };
  </code></pre>
  
  <p>Is it bad practice to provide <em>both</em> of the following as overloaded functions? Or should I just choose one and stick with it?</p>
  
  <pre><code>Foo *createFoo(const FooSpec *spec) { /* ... */ }
  Foo *createFoo(const FooSpec &amp;spec) { return createFoo(&amp;spec); }
  </code></pre>
  
  <p>Could having both cause unexpected problems?</p>