Во-первых, вам на самом деле не нужно руководство по выводам для этого типа - учитывая, что параметр шаблона класса уже установлен по умолчанию. Если вы предоставляете руководство по удержанию, оно должно быть:
Test() -> Test<void>;
Не имеет смысла делать это шаблоном руководства по вычетам.
<ч />
Тем не менее, я бы сказал, что это не ошибка ... ни от одного из компиляторов. Нет ничего неправильного в написании руководства по выводам, которое содержит параметры вывода, как показано в вашем примере:
template<class T> Test() -> Test<T>;
Но хотя эта конструкция разрешена стандартом, на самом деле бессмысленно когда-либо это делать. Смысл руководства по удержанию состоит в том, чтобы ... направлять удержание. Если вы предоставите не вычитаемое руководство по выводу, какой смысл в этом? Ошибка Clang здесь кажется мне очень полезной - она предупреждает вас о том, что вы написали код, который явно неверен.
Если мы педантичны, лягушатник. Но практически я предпочитаю результат clang gcc.