1、可以為類模闆的類型形參提供預設值,但不能為函數模闆的類型形參提供預設值。函數模闆和類模闆都可以為模闆的非類型形參提供預設值。
2、類模闆的類型形參預設值形式為:
為第二個模闆類型形參t2提供int型的預設值。
3、類模闆類型形參預設值和函數的預設參數一樣,如果有多個類型形參則從第一個形參設定了預設值之後的所有模闆形參都要設定預設值,比如
就是錯誤的,因為t1給出了預設值,而t2沒有設定。
4、在類模闆的外部定義類中的成員時template 後的形參表應省略預設的形參類型。比如
定義方法為
輸出2(8右移2位),另外會報一個double轉int會丢失資訊的warning。
在類模闆的外部定義類中的成員時template 後的形參表應省略預設的形參類型,如果沒有省略,可能會依編譯器不同有不同的處理方案(之前的vc可能隻是報warning),我在vs2012和g++上是報錯:
可見這裡編譯器将這裡的預設參數認為是函數模闆的。
輸出9
[1] http://www.cnblogs.com/gw811/archive/2012/10/25/2736224.html(注:此文有多處問題,請抱着謹慎态度檢視)