As discussed, it's not an error in itself if an object refuses teardown:
that just means that you can forget about it and it's someone else's
problem now. But if you really have to deallocate it right now, that's
not going to work.
It might be an idea to introduce a macro to say, essentially,
{ int rc = sod_teardown(OBJ); assert(!rc); }
The instance has automatic storage duration: pointers to it will become
invalid when control exits the scope of the declaration. If necessary, the
instance should be torn down before this happens, using the
- \descref{fun}{sod_teardown}[function].
+ \descref{fun}{sod_teardown}[function]. It may be appropriate to @|assert|
+ that the object is ready for deallocation at this time.
\end{describe}
\subsubsection{Dynamic allocation}
using the
.B sod_teardown
function.
+It may be appropriate to
+.BR assert (3)
+that the object is ready for deallocation at this time.
.PP
The
.B SOD_MAKE