O que são tipos POD em C++ e para que servem?
Olá a todos! Comecei a estudar C++ e me deparei com o termo "tipo POD". Li a documentação, mas ainda não entendo completamente. Parece que é "Plain Old Data", mas o que isso traz na prática?
Digamos que eu escreva uma estrutura simples para armazenar um ponto:
```cpp
struct Point {
int x;
int y;
};
```
Ela é um tipo POD? E se eu adicionar um construtor?
```cpp
struct Point2 {
Point2() : x(0), y(0) {}
int x;
int y;
};
```
Ou se eu adicionar uma função virtual?
```cpp
struct Point3 {
virtual void print() {}
int x;
int y;
};
```
Por que isso é importante? Onde é usado? Ouvi dizer que tipos POD podem ser copiados via memcpy, mas estruturas comuns não. Isso é verdade? E como verificar se um tipo é POD em C++ moderno?
Gostaria de uma explicação clara com exemplos, de preferência do ponto de vista do padrão moderno (C++11/14/17/20). Desde já, obrigado!
<<>>
O que são tipos POD em C++?
POD (Plain Old