// 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_;
}
Примечание: C является параметром шаблона
Я знаю, что мы не можем удалить нулевой указатель, будет создано исключение. Поэтому в этом случае определение перечисления должно делать что-то, чтобы предотвратить это. В производстве иногда мы не хотим заканчивать программу просто, потому что у нас есть нулевой указатель, мы можем захотеть взглянуть на альтернативный сценарий, когда указатель имеет значение null. И этот код используется в производстве почти везде?
Спасибо, ребята.