Мне интересно, почему следующий код не компилируется:
struct S
{
template <typename... T>
S(T..., int);
};
S c{0, 0};
Этот код не скомпилируется как с clang, так и с GCC 4.8. Вот ошибка с clang:
test.cpp:7:3: error: no matching constructor for initialization of 'S'
S c{0, 0};
^~~~~~~
test.cpp:4:5: note: candidate constructor not viable: requires 1 argument, but 2 were provided
S(T..., int);
^
Мне кажется, что это должно работать, и T следует выводить как пакет длиной 1.
Если стандарты запрещают делать подобные вещи, кто-нибудь знает, почему?