的「模板參數推導類模板」建議(P0091R2)包含以下例子:「類模板的模板參數推導」是否應該推導可變類模板的空參數包?
template<class ... Ts> struct X { X(Ts...) };
X x1{1}; // OK X<int>
X x11; // OK X<>
(除了事實,即構造定義缺少體),示例似乎暗示用零參數構造的可變類模板將用空參數包推導出來。
不幸的是,克最新版本++不同意:
int main()
{
X x1{1};
X x11;
}
In function 'int main()':
error: invalid use of template-name 'X' without an argument list
X x11;
^
note: class template argument deduction requires an initializer
我找不到的建議,闡明明確的措辭這種互動。 g ++在這裏錯了嗎?
'X x11 {};'的作品。 – ildjarn
我想說gcc實現現在處於實驗階段。即'vector v {2,3}'工作,但'vector v {2,3,4}'產生一個錯誤,'int'不是一個類,struct或union類型。 – krzaq
@krzaq:它似乎試圖爲該特定情況調用[構造函數(2)](http://en.cppreference.com/w/cpp/container/vector/vector)。我想知道這是否實際上是有意的*(即這些情況下的消歧規則是什麼)*。順便說一下,我知道gcc正處於實驗階段 - 我的興趣是在適當的時候提交錯誤報告。 –