2016-04-18 121 views
0

我的問題可能會讓你們很多人感到奇怪,我對此非常抱歉。默認模板參數語法

我能記得的,我幾年前成功地定義了默認的模板參數類使得語法

Foo<> f; 

可以通過

Foo f; 

但是更換,我不記得我是怎麼做到的。我認爲Foo類是用variadic模板定義的,默認的模板參數是一個整數值(SIZE),但我沒有設法重現目標語法。

有人知道該怎麼做嗎? 如果只是一個夢,我真的很抱歉!

編輯:好了,只要我能記得,關鍵的基礎是要重新定義

template<int SIZE=0> 
class Foo; 

一些可變參數模板。但我知道,我的問題是奇怪的,它恐怕是不可能獲得這樣的語法... :)

+5

短語'如果它只是一個夢....'只是做我一天:)(你是從唯一的人是遠在這個網站誰在代碼夢想 –

+2

也許你正在考慮函數模板? –

+0

你是在談論模板定義中的語法嗎?如果是這樣,如果您給出了您定義的模板的一個小例子,這將有所幫助。 – kfsone

回答

1

你可能要像

template<size_t SIZE = 0> 
struct Foo { 
    // ... 
}; 

Demo


減少到

Foo f; 

雖然是不可能的。

+0

當然,我知道!我覺得我設法找到了一個可變的模板,但我知道它是可疑的...... :) – Aleph

1

一個很好的解決方案是爲你定義一個別名類型。

template<std::size_t size = 0> 
struct Foo { 
    // ... 
}; 

using DefaultFoo = Foo<>; 

你不能有,雖然名稱相同...