跟copy elision沒有關係,而是c3 = c2.reverse();呼叫到了implicit copy assignment operator,只會做member-wise copy,所以c3的_str和等號右邊的一樣,指到的array都會被等號右邊的prvalue的destructor幹掉。如果遵守rule of 0/3/5就不會被這deprecate很久的功能雷到:
https://eel.is/c++draft/depr.impldec沒客製化copy-assignment 的sanitizer output:
https://godbolt.org/z/1KKrb6bMouncomment掉就好了