Copy elision là tối ưu hóa do hầu hết trình biên dịch triển khai để ngăn sao chép thêm (tiềm năng tốn kém) trong một số tình huống. Nếu code tạo đối tượng không được dùng hoặc không có side effect:
Ví dụ
struct MyStruct {
MyStruct() {}
MyStruct(const MyStruct&) { cout << "Copied.\n"; }
};
MyStruct f() { return MyStruct(); }
int main() {
cout << "Main\n";
MyStruct obj = f();
}Đầu ra có thể
Main Main Copied Copied Main Copied
Có thể tạo ít đối tượng hơn dự kiến, nên không thể dựa vào số lần gọi constructor/hủy cụ thể. Không nên đặt logic quan trọng trong copy/move constructor hay destructor vì không đảm bảo được gọi.