mizvekov wrote: Regarding test case 2, that further reduces to: ```C++ template <class, int Rows_, int = (Rows_)> class Q {};
template <int rows> void F(Q<double, rows, rows>); template <class Scalar, int Rows> void F(Q<Scalar, Rows>) = delete; void test() { F(Q<double, 1>()); } ``` The problem is that we consider the parenthesized expression significant in terms of forming a distinct type. You can see the problem goes away if you remove that parenthesis in the default argument for Q. I believe the parenthesis should not be significant in this case, and there is also some divergence between GCC and Clang in this area. I am asking the core reflector for clarification here. https://github.com/llvm/llvm-project/pull/100692 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits