Sama halnya dengan legalitas delete this, penempatan baru thisjuga diperbolehkan sejauh yang saya tahu. Juga, mengenai apakah this, atau petunjuk / referensi yang sudah ada sebelumnya dapat digunakan setelah itu, ada beberapa batasan:
[basic.life]
Jika, setelah masa pakai objek berakhir dan sebelum penyimpanan tempat objek yang ditempati digunakan kembali atau dilepaskan, objek baru dibuat di lokasi penyimpanan tempat objek asli ditempati, penunjuk yang menunjuk ke objek asli, referensi yang merujuk ke objek asli, atau nama objek asli akan secara otomatis merujuk ke objek baru dan, sekali masa hidup objek baru telah dimulai, dapat digunakan untuk memanipulasi objek baru, jika:
- penyimpanan untuk objek baru persis menutupi lokasi penyimpanan tempat objek asli ditempati, dan
- objek baru dari jenis yang sama dengan objek asli (mengabaikan kualifikasi-tingkat cv), dan
- tipe objek asli tidak memenuhi syarat const, dan, jika tipe kelas, tidak mengandung anggota data non-statis yang tipenya memenuhi syarat const atau tipe referensi, dan
- baik objek asli maupun objek baru bukanlah sub-objek yang berpotensi tumpang tindih ([intro.object]).
Dua yang pertama puas dalam contoh ini, tetapi dua yang terakhir perlu dipertimbangkan.
Mengenai poin ketiga, mengingat bahwa fungsinya non-const-kualifikasi, itu harus cukup aman untuk mengasumsikan bahwa objek aslinya adalah non-const. Kesalahan ada di sisi penelepon jika ketegaran telah dibuang. Mengenai const / anggota referensi, saya pikir itu dapat diperiksa dengan menyatakan bahwa ini dapat ditugaskan:
static_assert(std::is_trivial_v<A> && std::is_copy_assignable_v<A>);
Tentu saja, karena penugasan adalah persyaratan, Anda bisa menggunakan *this = {};yang saya harapkan untuk menghasilkan program yang sama. Sebuah use case yang mungkin lebih menarik mungkin adalah menggunakan kembali memori *thisuntuk objek tipe lain (yang akan gagal persyaratan untuk menggunakan this, setidaknya tanpa menafsirkan kembali + pencucian).
Mirip dengan delete this, penempatan baru thishampir tidak dapat digambarkan sebagai "aman".