Template Metaprogramming:使用模板實現元編程,可以在編譯時進行計算和決策,以提高程序的性能和靈活性。
SFINAE(Substitution Failure Is Not An Error):通過使用模板參數推斷和函數重載,可以實現編譯時的條件分支和選擇。
Type Traits:使用模板元函數(template metafunctions)可以在編譯時查詢和操作類型的屬性,比如判斷類型是否是指針、是否是引用等。
Variadic Templates:C++11引入了可變參數模板(variadic templates),可以接受任意數量的參數進行處理,比如實現可變參數函數、元組等功能。
Template Specialization:可以根據特定的類型或條件,對模板進行特化(specialization),以提供定制化的實現。
CRTP(Curiously Recurring Template Pattern):使用模板繼承自身,可以在編譯時實現靜態多態性,實現類似于虛函數的效果。
Template Aliases 和 Template Template Parameters:C++11引入了模板別名(template aliases)和模板模板參數(template template parameters),可以提高模板的靈活性和可讀性。