@@ -8486,7 +8486,12 @@ convert_for_assignment (tree type, tree rhs,
overloaded function. Call instantiate_type to get error
messages. */
if (rhstype == unknown_type_node)
- instantiate_type (type, rhs, tf_warning_or_error);
+ {
+ tree r = instantiate_type (type, rhs, tf_warning_or_error);
+ /* -fpermissive might allow this. */
+ if (!seen_error ())
+ return r;
+ }
else if (fndecl)
error ("cannot convert %qT to %qT for argument %qP to %qD",
rhstype, type, parmnum, fndecl);
new file mode 100644
@@ -0,0 +1,16 @@
+// PR c++/80043
+// { dg-options -fpermissive }
+
+struct A
+{
+ template<int> void foo()
+ {
+ void (A::* fp)();
+ fp = A::foo<0>; // { dg-warning "assuming pointer to member" }
+ }
+};
+
+void bar()
+{
+ A().foo<0>();
+}