¿Qué son los aggregates, tipos triviales y POD en C++? ¿Cómo funcionan y para qué sirven?
¡Hola a todos! Acabo de empezar a estudiar C++ y me topé con los términos "aggregate", "tipo trivial" y "POD". Honestamente, estoy confundido. Parece que todos describen estructuras simples, pero no entiendo la diferencia.
Por ejemplo, tengo este código:
```cpp
struct Point {
int x;
int y;
};
struct NamedPoint {
std::string name;
int x;
int y;
};
```
Leí que `Point` es un aggregate, pero `NamedPoint` ya no lo es porque tiene `std::string`. ¿Por qué? ¿Qué hace que un tipo sea "trivial"? ¿Y qué es "POD"? Dicen que los tipos POD se pueden copiar con `memcpy`, pero los normales no. ¿Es cierto?
También escuché que en C++17 y C++20 las reglas para aggregates cambiaron. ¿Pueden explicar de forma sencilla qué tipos son aggregates, triviales y POD, y por qué es importante para el rendimiento y la compatibilidad con C? Los ejemplos con código serían muy útiles. ¡Gracias de antemano!
<<>>
Respuesta breve
Estos tres conceptos — aggregate, trivial y