re PR c++/29143 (address-of overloaded function does not work in function call)
authorPaolo Carlini <paolo.carlini@oracle.com>
Sat, 16 Nov 2013 09:54:23 +0000 (09:54 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Sat, 16 Nov 2013 09:54:23 +0000 (09:54 +0000)
/cp
2013-11-16  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/29143
* semantics.c (finish_call_expr): Ensure that for OVERLOADs too
'(&f)(...)' is the same as '(f)(...)', per 13.3.1.1.

/testsuite
2013-11-16  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/29143
* g++.dg/overload/addr2.C: New.
* g++.old-deja/g++.other/overload11.C: Adjust.

From-SVN: r204898

gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/overload/addr2.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.other/overload11.C

index 2adcce4..3f7e1be 100644 (file)
@@ -1,3 +1,9 @@
+2013-11-16  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/29143
+       * g++.dg/overload/addr2.C: New.
+       * g++.old-deja/g++.other/overload11.C: Adjust.
+
 2013-11-15  Mike Stump  <mikestump@comcast.net>
 
        * lib/gcc.exp (gcc_target_compile): Add support for random runtime
diff --git a/gcc/testsuite/g++.dg/overload/addr2.C b/gcc/testsuite/g++.dg/overload/addr2.C
new file mode 100644 (file)
index 0000000..1d0c66b
--- /dev/null
@@ -0,0 +1,13 @@
+// PR c++/29143
+
+void f(int);
+
+void g(int,int);
+void g(int,int,int);
+
+void
+h ()
+{
+  (&f)(1);
+  (&g)(1,2,3);
+}
index b994b80..0b910e4 100644 (file)
@@ -32,7 +32,7 @@ int main (int argc, char **argv)
   void (*vptr) ();
   
   (ovl) (1);                // ok
-  (&ovl) (1);               // { dg-error "" } not suitable for overload resolution
+  (&ovl) (1);               // ok
   (ovl) ();                 // { dg-error "" } no matching candidates
   // { dg-message "candidate" "candidate note" { target *-*-* } 36 }
   (&ovl) ();                // { dg-error "" } not suitable for overload resolution