What translation unit holds implictly defined special member functions?
<p>I'm using <code>boost::scoped_ptr</code> and a forward declaration in a header file:</p>

<pre><code>//Bar.h
class Foo;

class Bar;
{

private:
    boost::scoped_ptr&lt;Foo&gt; _foo;
};
</code></pre>

<p>I don't implement my own destructor since the smart pointer will do the job.</p>

<p>I include this header file in multiple translation units and not all of them include the <code>Foo</code> definition. When trying to compile I get an error that <code>scoped_ptr</code> is deleting a pointer to incomplete type <code>Foo</code>. </p>

<p>Everything is fixed easily if I declare an empty destructor in <code>Bar.h</code> and implement it in <code>Bar.cpp</code>.</p>

<p>However I got the same error if the destructor is implemented in a header file.</p>

<p>So the question is: in which translation units do implicitly defined methods go?</p>
