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;}


留言
張貼留言