mizvekov wrote: So Jason pointed out that GCC's provisional wording for CWG2398 picks a dubious candidate for this example: ```C++ template<typename T, typename U> struct match2;
template<template<typename A> class t1,typename T> struct match2<t1<T>, typename t1<T>::type > { typedef int type; }; // #5 template<template<typename B, typename C> class t2,typename T0,typename T1> struct match2<t2<T0,T1>, typename t2<T0,T0>::type > { typedef int type; }; // #6 template <class T, class U = T> struct Q { typedef int type; }; match2<Q<int>, int> m; ``` They pick #6, where with this PR we stay with ambiguous. According to [this GCC bug](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114841), he suggests changing GCC to adopt the wording proposed here. https://github.com/llvm/llvm-project/pull/89807 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits