SomeObject* SomeFunction1();
void CodeSnippet1() {
// something fishy going on, but nothing identifiable by compiler
SomeObject* p;
p = SomeFunction1();
delete p;
}
undeletable_ptr<SomeObject> SomeFunction2();
void CodeSnippet2() {
SomeObject* p;
p = SomeFunction2(); // compilation error
delete p;
}
undeletable_ptr<SomeObject> SomeFunction3();
void CodeSnippet3() {
undeletable_ptr<SomeObject> p;
p = SomeFunction3();
delete p; // compilation error
}