5
做給定一個模板專營模板
template <int n>
void f(){...};
我知道我可以專注它的n
具體數值
template <>
void f<2>(){...};
但是,有沒有這讓我的方法專門爲所有積極n
?
我以爲做以下
template <int n>
void f<n>(){
int dummy[n]; //invalid for n < 0
...
};
的所以對於n<0
這個代碼無效,編譯器會訴諸於以前的定義。不幸的是,我得到的只是一個redefinition of 'void f<n>()'
錯誤。
注:我猜這可能不是標準支持。我問是否沒有某種方法(可能是一些模板元編程)來實現這種效果。
風格的問題,但我更喜歡把'enable_if'放在返回類型上,所以在混淆的東西(用戶和函數的類型)周圍沒有一個神奇的參數。 – GManNickG 2012-04-04 19:33:24