std::is_pod
probablemente estará en desuso en C ++ 20.
¿Cuál es el motivo de esta elección? ¿Qué debo usar en lugar de std::is_pod
para saber si un tipo es realmente un POD?
c++
typetraits
skypjack
fuente
fuente
static_assert
asegurarme de que nadie toque estructuras que deberían compartirse con el código C.Respuestas:
POD está siendo reemplazado por dos categorías que dan más matices. La reunión estándar de c ++ en noviembre de 2017 tenía esto que decir al respecto:
Para tipos de datos simples use la
is_standard_layout
función, para tipos de datos triviales (como estructuras simples) use lais_trivial
función.fuente
remove_cvref
por un lado, ¿que es un rasgo compuesto, mientras que por el otro lado eliminan otros rasgos compuestos? Parece una locura. :-)std::is_pod<T>{} == (std::is_trivial<T>{} && std::is_standard_layout<T>{})
?std::is_pod
,std::is_trivia
ystd::is_standard_layout
el tiempo de compilación? Porque en los algoritmos, es posible que desee un algoritmo más rápido usando memcpy (), etc. si es compatible con el diseño C.