std::is_pod
będzie prawdopodobnie przestarzałe w C ++ 20.
Jaki jest powód tego wyboru? Czego należy używać zamiast, std::is_pod
aby wiedzieć, czy typ jest faktycznie POD?
c++
typetraits
skypjack
źródło
źródło
static_assert
aby upewnić się, że nikt nie dotyka struktur, które powinny być współdzielone z kodem C.Odpowiedzi:
POD jest zastępowany dwiema kategoriami, które dają więcej niuansów. Na standardowym spotkaniu C ++ w listopadzie 2017 roku można było o tym powiedzieć:
Dla prostych typów danych użyj
is_standard_layout
funkcji, dla trywialnych typów danych (takich jak proste struktury) użyjis_trivial
funkcji.źródło
remove_cvref
z jednej strony dodają , to jest cecha złożona, a z drugiej usuwają inne cechy? Wydaje się szalone. :-)std::is_pod<T>{} == (std::is_trivial<T>{} && std::is_standard_layout<T>{})
?std::is_pod
,std::is_trivia
istd::is_standard_layout
kompilacji? Ponieważ w algorytmach możesz chcieć szybszego algorytmu używającego memcpy () itp., Jeśli jest zgodny z układem C.