summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.pt/explicit72.C
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.pt/explicit72.C')
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/explicit72.C21
1 files changed, 21 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit72.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit72.C
new file mode 100644
index 000000000..f0e88acfc
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit72.C
@@ -0,0 +1,21 @@
+// { dg-do assemble }
+// Contributed by Reid M. Pinchback <reidmp@MIT.EDU>
+// Adapted by Alexandre Oliva <oliva@dcc.unicamp.br>
+// plain char, signed char and unsigned char are distinct types
+
+template <class X, class Y> struct bug {};
+template <class X> struct bug<X,char> { typedef char t; };
+template <class X> struct bug<X,unsigned char> { typedef unsigned char t; };
+template <class X> struct bug<X,signed char> { typedef signed char t; };
+template <class X> struct bug<char,X> { typedef char t; };
+template <class X> struct bug<unsigned char,X> { typedef unsigned char t; };
+template <class X> struct bug<signed char,X> { typedef signed char t; };
+
+void foo() {
+ bug<int,char>::t();
+ bug<int,signed char>::t();
+ bug<int,unsigned char>::t();
+ bug<char,int>::t();
+ bug<signed char,int>::t();
+ bug<unsigned char,int>::t();
+}