Алиас для специализации класса с параметром-шаблоном работает по-разному в gcc и clang
#include <iostream>
template <class>
struct B {};
template <template<class> class>
struct A {
A() { std::cout << "1\n"; }
};
template <>
struct A<B> {
A() { std::cout << "2\n"; }
};
template <class T>
using C = B<T>;
int main() {
A<B>{}, A<C>{};
}
Почему выводы gcc и clang отличаются (godbolt)? Кто прав и почему?
gcc 10.2:
2
2
clang 10.0.0:
2
1
Ответы (1 шт):
Автор решения: HolyBlackCat
→ Ссылка
Это core issue 1286.
Насколько я понимаю, сейчас прав Clang. Если предложенные по ссылке изменения добавят в стандарт, тогда прав будет GCC.