valid: operations that never have any preconditions can be used. Destruction never has any precondition, assignment and const-qualified observers (eg. size()) should be safely callable (even though eg. size() may return an unspecified value).
unspecified: operations that do have some preconditions (eg. pop()) should not used.