Сбой вывода шаблона класса Variadic с gcc 8.2, компилируется с помощью clang и msvc
Следующее не может быть скомпилировано с gcc 8.2 -std= C++17, с руководством по выводам или без него, но компилируется с помощью clang (даже clang 5) и последней версии msvc, как вы можете видеть здесь.
template <class... Ts>
struct A
{
template <class... T>
A(T... any)
: tuple_{std::tuple{any...}}
{
}
std::tuple<Ts...> tuple_;
};
template<class ... T>
A(T... any)->A<decltype(any)...>;
int main()
{
auto f = [](int){};
auto a1 = A{7};
auto a2 = A{f,7};
}
Насколько я могу судить, я не делаю здесь ничего странного, и я подумал, что это будет типичный вариант использования CTAD.
Вопрос в том, какой компилятор прав?