TriviallyCopyable:如果 T 是此類型,則可以使用 memcpy 高效複製,使用 std::is_trivially_copyable 來判斷是否為此類型。
TrivialType:TriviallyCopyable 且有一個或多個 default 建構子,所有這些建構子都是 trivial 或 deleted,並且至少有一個是非 deleted。使用 std::is_trivial 來判斷是否為此類型。
StandardLayoutType:如果 T 是此類型,則相容於 C,可以和 C 程式互相操作,使用 std::is_standard_layout 來判斷是否為此類型。
PODType:TriviallyCopyable 且 StandardLayoutType。使用 std::is_pod 來判斷是否為此類型。
當我們設計看盤軟體的資料結構時,會希望滿足 POD 型別,這樣可以高效的複製並且可以最大相容於 C API。
#include <type_traits>
struct K
{
unsigned long d; // 日期
unsigned long t; // 時間
double o; // 開
double h; // 高
double l; // 低
double c; // 收
double v; // 量
};
int main()
{
std::cout << std::boolalpha;
std::cout << std::is_trivially_copyable<K>::value << std::endl;
std::cout << std::is_trivial<K>::value << std::endl;
std::cout << std::is_standard_layout<K>::value << std::endl;
std::cout << std::is_pod<K>::value << std::endl;
return 0;
}
