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();