Macro Subspace :: sus_class_never_value_field

#define sus_class_never_value_field(unsafe_fn, T, field_name, never_value, destroy_value)

Mark a class field as never being a specific value, often a zero, after a constructor has run and before the destructor has completed. This allows querying if a class is constructed in a memory location, since the class is constructed iff the value of the field is not the never-value.

The named field can be compared to the never_value to determine if the object is constructed. The field must be set to the destroy_value just prior to destruction. The latter is meant to help the destructor be a no-op when the type is in a never-value state, if the never-value would be read in the destructor.

The macro includes private: which changes the class definition visibility to private.