+2020-05-05 Jason Merrill <jason@redhat.com>
+
+ CWG 2235
+ * pt.c (more_specialized_fn): Do consider parms with no deducible
+ template parameters.
+
2020-05-05 Jason Merrill <jason@redhat.com>
PR c++/90212
len = 0;
}
- /* DR 1847: If a particular P contains no template-parameters that
- participate in template argument deduction, that P is not used to
- determine the ordering. */
- if (!uses_deducible_template_parms (arg1)
- && !uses_deducible_template_parms (arg2))
- goto next;
-
if (TYPE_REF_P (arg1))
{
ref1 = TYPE_REF_IS_RVALUE (arg1) + 1;
These must be unordered. */
break;
- next:
-
if (TREE_CODE (arg1) == TYPE_PACK_EXPANSION
|| TREE_CODE (arg2) == TYPE_PACK_EXPANSION)
/* We have already processed all of the arguments in our
int main()
{
- f(1,2); // { dg-error "ambiguous" }
+ f(1,2);
}
--- /dev/null
+// CWG 2235
+
+namespace X
+{
+ template<typename T> struct Const { typedef void type; };
+ template<typename T> void f(T, typename Const<T>::type*); // T1
+ template<typename T> void f(T, void *); // T2
+ void g(void *p) { f(0, p); }
+}
+
+namespace Y
+{
+ struct A { A(int); };
+ struct B { B(int); };
+
+ template<typename T> void f(T, A);
+ template<typename T> void f(T*, B);
+
+ void g(int *p) { f(p, 0); } // { dg-error "ambiguous" }
+}