I'm trying to figure out the purpose of the '@+' token in Angelscript, this [http://www.angelcode.com/angelscript/sdk/docs/manual/doc_obj_handle.html] lists them as auto handles near the bottom of the page, and if I'm reading it right, then this in action would look like this:
Obj@+ ChooseObj(Obj@+, Obj@+);
void main()
{
Obj@ A, B;
@A = new Obj();
@B = new Obj();
// at this point A and B have a refcount of 1.
Obj@ C = ChooseObj(A, B);
//Let C = B, so A got decref'd and was deleted
// this should be true, because while
// the A's refcount hit 0, and it was
// deleted; the pointer wasn't reassigned.
if(A !is null)
// this should crash from an invalid pointer
A.doMethod();
}
Meanwhile, B got decref'd and incref'd, so it has a refcount of 1 when it gets returned, then gets addrefed again when it gets assigned to C. So C/B correctly has a value of 2, but that seems to be more a coincidence than anything.
In short I feel like I must be reading this wrong, because I can't think of any practical upshot of this behavior. What is it talking about?
EDIT: clarification