Consider the statement decltype(s){}.swap(s), where s is a STL class entity. If s is not ::std::array, this gets a nice complexity ( O(constant) ).
But I wonder, where the old one goes? Is it automatically deleted?
I think so, for the old one will never be used again. But I'm not sure about that (if the compiler will think so).
CodePudding user response:
The content of s is swapped with the content of the temporary object created by decltype(s){}. Effectively, s will simply become re-initialized with its default content, and the temporary object will destroy the old content when itself is destroyed when it goes out of scope.
And FYI, swap() works with std::array, too.
