8 Abnormal program termination comes out. It's not really suitable as a primary tool for giving end-user error messages. This mechanism is useful in obtaining detail about errors, but you need to be careful to reset errno each time. Also, errno is not thread-safe. But you don't need to worry about this unless you really want to make sophisticated use of string facilities.
Strings have value semantics, meaning that a copy is done when one string is assigned to another.
The set of properties that is available will vary based on the underlying type. For example, floating-point types have information available on exponents, infinity, and so on. This approach allows for error-handling strategies that do not use exceptions. It is worth revisiting this topic, given the new standard for the language. Some aspects of all the above are a little tricky, but it's important to understand the complete process of invocation and termination.