To jest około std::is_pod
, które wykrywa, czy szablon jest zwykłym starym typem danych , czy też nie.Dlaczego to nie jest POD?
Zobacz następujący kod:
struct A {
public:
int m1;
int m2;
};
struct B {
public:
int m1;
private:
int m2;
};
struct C {
private:
int m1;
int m2;
};
int main()
{
std::cout << std::boolalpha;
std::cout << std::is_pod<A>::value << '\n'; // true
std::cout << std::is_pod<B>::value << '\n'; // false
std::cout << std::is_pod<C>::value << '\n'; // true
}
W 3 elemencie wszystko wyglądać POD mnie. Ale widocznie struct B
nie jest. Nie rozumiem, dlaczego. Dla mnie wszyscy mają trywialnego konstruktora, przenoszą i kopiują operatora. Destruktor jest z pewnością trywialny.
Obwiniam to za pomocą 2 specyfikatorów dostępu, ale nie mogę znaleźć informacji na ten temat.
http://pl.cppreference.com/w/cpp/types/is_pod – juanchopanza
Dla tych z nas, którzy mają ochotę kliknąć link @ juanchopanza, POD = zwykły stary typ danych –