What is this enum for in the destructor?
<pre><code>// Destructor.  If there is a C object, delete it.
// We don't need to test ptr_ == NULL because C++ does that for us  

    ~scoped_ptr() {
       enum { type_must_be_complete = sizeof(C) };
       delete ptr_;
    }
</code></pre>

<p>Note: C is a template parameter</p>

<p>I know we cant delete a null pointer, an exception will be raised.
So in this case, the enum definition must be doing something to prevent that.
In production, sometimes we dont want to end a program simple because we have a null pointer, we may want to look at alternative scenario, when the pointer is null.
And this code is used in production, almost everywhere?</p>

<p>Thanks guys.</p>
