boost庫似乎是即將到來的C++ 0x標準,它定義了各種類型特徵模板來區分具有微不足道的構造函數,複製構造函數,賦值或析構函數的對象,噸。其中最重要的用途之一是優化某些類型的算法,例如,通過使用memcpy。C++:has_trivial_X類型特徵
但是,我不明白所有各種has_trivial_X模板之間的實際區別。 C++標準只定義了兩類我們在這裏關注的大類:POD和非POD。如果類型具有定義的構造函數,複製構造函數,賦值運算符或析構函數,則類型爲非POD。換句話說,任何不是內置類型或內置類型的C結構的東西都不是POD。
那麼有什麼區別,例如,has_trivial_assign和has_trivial_constructor?如果一個對象有一個不平凡的賦值運算符或一個不平凡的構造函數,它不是一個POD。那麼在什麼情況下知道一個對象有一個微不足道的賦值操作符,而且是一個不平凡的構造函數呢?
換句話說,爲什麼不定義一個單一的類型特質模板is_pod<T>
,並用它來完成?