| Issue |
167320
|
| Summary |
[clang] Wrong class specialization is selected when alias template is used for template template parameter
|
| Labels |
clang
|
| Assignees |
|
| Reporter |
carljohnsonnewhampshire-hue
|
The second static assert in the following trivial example code fails due to incorrect class specialization being selected:
```C++
template <template <typename...> class, class>
struct match_class_specialization
{
enum { matches = 0 };
};
template <template <typename...> class Type, typename... Ts>
struct match_class_specialization<Type, Type<Ts...>>
{
enum { matches = 1 };
};
template <typename...> struct my_type {};
static_assert(match_class_specialization<my_type, my_type<int, int>>{}.matches);
template <typename... Ts> using my_type_alias = my_type<Ts...>;
static_assert(match_class_specialization<my_type_alias, my_type<int, int>>{}.matches);
int main() {}
```
This compiles fine in GCC.
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs