1,traits
char name[] = "templates";
int legnth = sizeof(name) - 1;
accum(&name[0], &name[legnth]);
2,value trait
value trait有個缺點:在所在類的內(nèi)部,C++只允許對整形和枚舉類型初始化成靜態(tài)成員變量。
顯然folat或其它自定義類型等不能使用上面解決方案。
3,使用靜態(tài)成員函數(shù)來做為value trait
4,
trait提供了一種配置具體元素(通常是類型)的途徑,而該途徑通常是泛型計算。
前面三種被稱為fixed trait,一點定義了這個分離的trait就不能子啊算法中對其進行改寫。
從原則上講參數(shù)化trait的主要目的在于:添加一個具有缺省值的模板參數(shù),而且該缺省值由前面介紹的fixed trait決定。
有這種缺省值用戶就不用提供這個額外的模板實參,但是也可以改寫這個預設(shè)類型。
目前一些編譯器對函數(shù)模板預設(shè)缺省模板實參還不支持,因此將其實現(xiàn)為一個類。
5,policy
上面traitstotal += *beg;除求和外還有求積、字符串連接等累積操作。
于是,我們把一個累積操作稱為一個policy
因此一個policy類就是一個提供了一個接口的類。