Listing 1
int n; ptr<int, !deletable> p_no_delete; ptr<int, deletable> p_can_delete; p_no_delete = p_can_delete; p_can_delete = p_no_delete; // compilation error p_no_delete = &n; p_can_delete = &n; // compilation error p_no_delete = new_cast(new int); // compilation error p_can_delete = new_cast(new int); p_no_delete = p_can_delete; p_can_delete = p_no_delete; // compilation error int* p; p = p_no_delete; // compilation error p = p_can_delete; // compilation error p_no_delete.Delete(); // compilation error p_can_delete.Delete();