Listing 6
void TestPtr() { 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.Delete(); // compilation error p_can_delete.Delete(); }