std::is_pod
mungkin tidak akan digunakan lagi di C ++ 20.
Apa alasan dari pilihan ini? Apa yang harus saya gunakan sebagai pengganti std::is_pod
untuk mengetahui apakah suatu jenis sebenarnya adalah POD?
c++
typetraits
skypjack
sumber
sumber
static_assert
memastikan tidak ada yang menyentuh struct yang harus dibagikan dengan kode C.Jawaban:
POD diganti dengan dua kategori yang memberi nuansa lebih. The pertemuan c ++ standar di November 2017 mengatakan ini tentang hal itu:
Untuk tipe data sederhana gunakan
is_standard_layout
fungsi, untuk tipe data sepele (seperti struct sederhana) gunakanis_trivial
fungsi.sumber
remove_cvref
di satu sisi, itu adalah sifat tersusun, sedangkan di sisi lain mereka menghilangkan sifat tersusun lainnya? Sepertinya gila. :-)std::is_pod<T>{} == (std::is_trivial<T>{} && std::is_standard_layout<T>{})
?std::is_pod
,std::is_trivia
danstd::is_standard_layout
waktu kompilasi? Karena dalam algoritme, Anda mungkin menginginkan algoritme yang lebih cepat menggunakan memcpy () dll jika kompatibel dengan C-layout.