Questo è circa std::is_pod
, che rileva se un modello è un tipo di dati vecchio vecchio oppure no.Perché questo non è un POD?
vedere il codice seguente:
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
}
I 3 struct tutti sembrano POD per me. Ma apparentemente struct B
non lo è. Non capisco perché. Per me, hanno tutti un banale costruttore, spostare e copiare l'operatore. Anche il distruttore è certamente banale.
Do la colpa a utilizzando 2 specificatori di accesso, ma non riesco a trovare informazioni su questo.
http://en.cppreference.com/w/cpp/types/is_pod – juanchopanza
Per quelli di noi pigri per fare clic sul link @ juanchopanza, POD = plain old data type –