Сбой вывода шаблона класса 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.

Вопрос в том, какой компилятор прав?

0 ответов

Другие вопросы по тегам