summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.bugs/900324_06.C
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.bugs/900324_06.C')
-rwxr-xr-xgcc/testsuite/g++.old-deja/g++.bugs/900324_06.C28
1 files changed, 28 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.bugs/900324_06.C b/gcc/testsuite/g++.old-deja/g++.bugs/900324_06.C
new file mode 100755
index 0000000..5a1938a
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.bugs/900324_06.C
@@ -0,0 +1,28 @@
+// g++ 1.37.1 bug 900324_06
+
+// g++ is unable to use context information (i.e. the required type of the
+// expression) to disambiguate a possibly overloaded function name when that
+// name is used as either the second or the third operand of a ?: operator.
+
+// It is also unable to use the fact that the given name is not in fact
+// overloaded (and has only one possible interpretation).
+
+// This results in improper errors being generated.
+
+// keywords: overloading, function pointers, disambiguation, operator?:
+
+int i;
+void (*p)();
+
+void function_0 ()
+{
+}
+
+void function_1 ()
+{
+ p = i ? function_0 : 0; // gets bogus error
+ p = i ? 0 : function_0; // gets bogus error
+ p = i ? function_1 : function_0; // gets bogus error
+}
+
+int main () { return 0; }