跟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掉就好了