對type traits的理解

最近在看關於c++ type traits方面的資料,順便寫一下自己的理解,怕以後忘了,不對的地方望大家指正。

一般來說,type traits就是取得c++中一種類型所擁有的信息,可以是原始類型或自定義的類類型。這種工作如果放在java或c#中是很容易做到的,因爲他們擁有反射這個強大的工具。而不同於擁有原數據的java和.net,c++要完成這樣的工作不是那麼直接的,而且原理也不一樣,java和.net獲得類型信息都是在運行時獲得的,c++則是在編譯時確定的。(這裏要更正一下啊,java和.net可以獲得一個對象(變量)的類型信息,而c++不能通過type traits獲得一個變量的類型信息,而只能獲得某一種類型的相關信息)

但是如果用得好,type traits是一個很強大的工具,它能獲得一個類型諸如是不是一個原始指針,是不是一個數組,是不是擁有某個成員函數等等信息。依靠這些信息我們就能做更多的事情。

c++ type traits 一般和模版和模版的特化及偏特化聯繫得比較緊密,主要是用模版偏特化的這個特性來實現。偏特化介於完全特化和完全泛化之間,又稱部分特化(個人覺得這個翻譯好理解一些)。完全泛化是針對所有的類型,完全特化是針對某一特定的類型,而偏特化則是針對有某種特徵的一部分的類型。

對type traits的學習還不深入,現在只能寫這麼多了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章