Связано, но (ИМХО) отличается: Вычет аргументов вложенного шаблона для шаблонов классов не работает
Следующий код C ++ 17 отклонен из GCC 8, но clang компилирует его безлюбые вопросы.Сообщение об ошибке GCC включено в качестве комментария непосредственно перед проблемной строкой.
Какой компилятор здесь верен?
https://godbolt.org/z/WG6f7G
template<class T>
struct Foo {
Foo(T) {}
};
template<class T>
struct Bar {
Bar(T) {};
};
void works() {
Bar bar{1};// {}
Foo foo(bar);// ()
}
void works_too() {
Foo foo{Bar{1}};// {{}}
}
void error_in_gcc() {
// error: 'auto' parameter not permitted in this context
Foo foo(Bar{1});// ({})
}
void but_this_works() {
Foo(Bar{1});// ({})
}