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

Reply via email to