What is the storage duration of a temporary object: automatic, thread, static, or dynamic?
I know that the lifetime of a temporary object ends at or before the full expression where it was created, unless it is bound to a reference, in which case its lifetime is extended to that of the reference and that gives us a lower bound for the end of the storage duration of the temporary object.
The standard is a bit vague. It says that temporary objects can have automatic, thread or static storage duration, but within definition of those storage durations, it only specifies when variables have such duration.
The standard doesn't exactly say what the storage duration of temporary is by name in each case. Rather, it describes separately when the temporary is destroyed.
The vagueness shouldn't matter much, unless I'm mistaken. Knowing storage duration name of an object is useful for knowing its lifetime when it isn't specified otherwise, but the lifetime for temporaries is specified otherwise so the storage duration name doesn't provide additional information as far as I can tell.
Although the standard doesn't say so, it would be reasonable to assume that when lifetime of a temporary is extended by a reference, then the temporary has the same storage duration as the reference has. Otherwise, the lifetime is similar to a variable with automatic storage duration within a hypothetical block surrounding the full-expression.