Evo uses these type categories for optimization.
- Plain Old Data (POD)
These types are plain data primitives that only use default constructors, assignment operators, and destructor.
- This generally means built-in types such as char or int
- Containers use memcpy() for copying these types – constructors, assignment operators, and destructors are skipped
- You may declare a custom POD type with EVO_PODTYPE() (rare)
- Byte-Copy Types
These types can be directly byte-copied without any copy constructor or assignment operator.
- These types still use a default constructor and destructor
- Containers use memcpy() for copying these types instead of copy constructor or assignment operator
- You may declare a custom Byte-Copy type with EVO_BCTYPE()
- Normal Types
These are normal types that use constructors, assignment operators and destructors.
- This means non-POD and non-Byte-Copy types – the default for custom types not recognized by Evo
- Containers call constructors and destructor on these types and use copy-constructor or operator=() to copy