]> gcc.gnu.org Git - gcc.git/commitdiff
new
authorJason Merrill <jason@gcc.gnu.org>
Thu, 22 Jan 1998 11:04:02 +0000 (06:04 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Thu, 22 Jan 1998 11:04:02 +0000 (06:04 -0500)
From-SVN: r17442

39 files changed:
gcc/testsuite/g++.old-deja/g++.pt/ttp1.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp10.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp11.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp12.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp13.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp14.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp15.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp16.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp17.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp18.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp19.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp2.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp20.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp21.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp22.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp23.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp24.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp25.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp26.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp27.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp28.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp29.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp3.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp30.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp31.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp32.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp33.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp34.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp35.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp36.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp37.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp38.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp39.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp4.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp5.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp6.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp7.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp8.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp9.C [new file with mode: 0644]

diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp1.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp1.C
new file mode 100644 (file)
index 0000000..4c6bac0
--- /dev/null
@@ -0,0 +1,14 @@
+// Build don't link:
+
+template<class E> class D
+{
+};
+
+template<template<class> class D,class E> class C
+{
+};
+
+int main()
+{
+       C<int,D> c;             // ERROR - args not match
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp10.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp10.C
new file mode 100644 (file)
index 0000000..ca0c9b6
--- /dev/null
@@ -0,0 +1,30 @@
+// Build don't link:
+
+template<class T> class D
+{
+       public:
+               int f();
+};
+
+template<class T> int D<T>::f()
+{
+       return sizeof(T);
+}
+
+template<template<class> class D,class E> class C
+{
+               D d;                    // ERROR - D is a template
+       public:
+               int f();
+};
+
+template<template<class> class D,class E> int C<D,E>::f()
+{
+       return d.f();                   // ERROR - d not properly declared
+}
+
+int main()
+{
+       C<D,int> c;
+       c.f();
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp11.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp11.C
new file mode 100644 (file)
index 0000000..213eb40
--- /dev/null
@@ -0,0 +1,25 @@
+template<class T> class D
+{
+       public:
+               int f();
+};
+
+template<class T> int D<T>::f()
+{
+       return sizeof(T);
+}
+
+template<template<class> class D,class E> class C
+{
+               D<E> d;
+       public:
+               int f() { return d.f(); }
+};
+
+int main()
+{
+       C<D,int> c;
+       C<D,char> d;
+       c.f();
+       d.f();
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp12.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp12.C
new file mode 100644 (file)
index 0000000..c9bc9f3
--- /dev/null
@@ -0,0 +1,28 @@
+template<class T> class D
+{
+       public:
+               int f();
+};
+
+template<class T> int D<T>::f()
+{
+       return sizeof(T);
+}
+
+template<template<class> class E,class D> class C
+{
+               E<D> d;
+       public:
+               int f();
+};
+
+template<template<class> class E,class D> int C<E,D>::f()
+{
+       return d.f();
+}
+
+int main()
+{
+       C<D,int> c;
+       c.f();
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp13.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp13.C
new file mode 100644 (file)
index 0000000..2745c7a
--- /dev/null
@@ -0,0 +1,28 @@
+template<class T> class D
+{
+       public:
+               int f();
+};
+
+template<class T> int D<T>::f()
+{
+       return sizeof(T);
+}
+
+template<template<class> class D,class E> class C
+{
+               D<E> d;
+       public:
+               int f();
+};
+
+template<template<class> class D,class E> int C<D,E>::f()
+{
+       return d.f();
+}
+
+int main()
+{
+       C<D,int> c;
+       c.f();
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp14.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp14.C
new file mode 100644 (file)
index 0000000..3b284ae
--- /dev/null
@@ -0,0 +1,30 @@
+template<class T> class D
+{
+       T       a;
+       public:
+               int f();
+};
+
+template<class T> int D<T>::f()
+{
+       return sizeof(T);
+}
+
+template<class E,template<class> class DD = D> class C
+{
+               DD<E> d;
+       public:
+               int f();
+};
+
+template<class E,template<class> class DD = D> int C<E,DD>::f()
+{
+       DD<E> d2;
+       return d2.f();
+}
+
+int main()
+{
+       C<int> c;
+       c.f();
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp15.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp15.C
new file mode 100644 (file)
index 0000000..25f3c4d
--- /dev/null
@@ -0,0 +1,29 @@
+template<class T> class D
+{
+       public:
+               int f();
+};
+
+template<class T> int D<T>::f()
+{
+       return sizeof(T);
+}
+
+template<template<class> class D,class E> class C
+{
+               D<E> d;
+       public:
+               int f();
+};
+
+template<template<class> class D,class E> int C<D,E>::f()
+{
+       D<E> d2;
+       return d2.f();
+}
+
+int main()
+{
+       C<D,int> c;
+       c.f();
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp16.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp16.C
new file mode 100644 (file)
index 0000000..ac736fa
--- /dev/null
@@ -0,0 +1,30 @@
+template<class T> class D
+{
+       T       a;
+       public:
+               int f();
+};
+
+template<class T> int D<T>::f()
+{
+       return sizeof(T);
+}
+
+template<template<class> class D,class E> class C
+{
+               D<E> d;
+       public:
+               int f();
+};
+
+template<template<class> class D,class E> int C<D,E>::f()
+{
+       D<E> d2;
+       return d2.f();
+}
+
+int main()
+{
+       C<D,int> c;
+       c.f();
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp17.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp17.C
new file mode 100644 (file)
index 0000000..6852404
--- /dev/null
@@ -0,0 +1,30 @@
+template<class T> class D
+{
+       public:
+               int f();
+};
+
+template<class T> int D<T>::f()
+{
+       return sizeof(T);
+}
+
+template<template<class> class D,class E> class C
+{
+               D<E> d;
+       public:
+               int f();
+               int g() { return 0; }
+};
+
+template<template<class> class D,class E> int C<D,E>::f()
+{
+       C<D,E> d2;
+       return d2.g();
+}
+
+int main()
+{
+       C<D,int> c;
+       c.f();
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp18.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp18.C
new file mode 100644 (file)
index 0000000..6c9e579
--- /dev/null
@@ -0,0 +1,30 @@
+template<class T> class D
+{
+       public:
+               int f();
+};
+
+template<class T> int D<T>::f()
+{
+       return sizeof(T);
+}
+
+template<template<class> class D,class E> class C
+{
+               D<E> d;
+       public:
+               int f();
+               int g() { return 0; }
+};
+
+template<template<class> class D,class E> int C<D,E>::f()
+{
+       C<D,char> d2;
+       return d2.g();
+}
+
+int main()
+{
+       C<D,int> c;
+       c.f();
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp19.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp19.C
new file mode 100644 (file)
index 0000000..8a24946
--- /dev/null
@@ -0,0 +1,24 @@
+#include <vector>
+
+template<template<class> class D,class E> class C
+{
+               D<E> d;
+       public:
+               int size() { return d.size(); }
+};
+
+template<template<class> class D,class E> int size(D<E> &d1)
+{
+       d1.size();
+       C<D,E> d2;
+       d2.size();
+       return 0;
+}
+
+int main()
+{
+       std::vector<int> c1;
+       std::vector<char> c2;
+       size(c1);
+       size(c2);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp2.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp2.C
new file mode 100644 (file)
index 0000000..5badbe2
--- /dev/null
@@ -0,0 +1,14 @@
+// Build don't link:
+
+template<class E> class D
+{
+};
+
+template<template<class> class D,int> class C
+{
+};
+
+int main()
+{
+       C<1,D> c;               // ERROR - args not match
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp20.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp20.C
new file mode 100644 (file)
index 0000000..e3b26c6
--- /dev/null
@@ -0,0 +1,27 @@
+template<class T> class D
+{
+       public:
+               int f();
+};
+
+template<class T> int D<T>::f()
+{
+       return sizeof(T);
+}
+
+template<template<class> class D,class E> class C : D<E>
+{
+       public:
+               int g();
+};
+
+template<template<class> class D,class E> int C<D,E>::g()
+{
+       return f();
+}
+
+int main()
+{
+       C<D,int> c;
+       c.g();
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp21.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp21.C
new file mode 100644 (file)
index 0000000..c6cc24b
--- /dev/null
@@ -0,0 +1,33 @@
+template<class T> class D
+{
+       public:
+               int f();
+};
+
+template<class T> int D<T>::f()
+{
+       return sizeof(T);
+}
+
+template<template<class> class D,class E> class C : D<E>
+{
+       public:
+               int g();
+};
+
+template<template<class> class D,class E> int C<D,E>::g()
+{
+       return f();
+}
+
+class E : C<D,int>
+{
+       public:
+               int h() { return g(); }
+};
+
+int main()
+{
+       E c;
+       c.h();
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp22.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp22.C
new file mode 100644 (file)
index 0000000..7eac0ed
--- /dev/null
@@ -0,0 +1,33 @@
+template<class T> class D
+{
+       public:
+               int f();
+};
+
+template<class T> int D<T>::f()
+{
+       return sizeof(T);
+}
+
+template<template<class> class DD,class EE> class C : DD<EE>
+{
+       public:
+               int f();
+};
+
+template<template<class> class DD,class EE> int C<DD,EE>::f()
+{
+       return DD<EE>::f();
+}
+
+class E : C<D,int>
+{
+       public:
+               int f() { return C<D,int>::f(); }
+};
+
+int main()
+{
+       E c;
+       c.f();
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp23.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp23.C
new file mode 100644 (file)
index 0000000..636bb1c
--- /dev/null
@@ -0,0 +1,33 @@
+template<class T> class D
+{
+       public:
+               int f();
+};
+
+template<class T> int D<T>::f()
+{
+       return sizeof(T);
+}
+
+template<template<class> class E,class D> class C : E<D>
+{
+       public:
+               int f();
+};
+
+template<template<class> class E,class D> int C<E,D>::f()
+{
+       return E<D>::f();
+}
+
+class E : C<D,int>
+{
+       public:
+               int f() { return C<D,int>::f(); }
+};
+
+int main()
+{
+       E c;
+       c.f();
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp24.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp24.C
new file mode 100644 (file)
index 0000000..1e6278f
--- /dev/null
@@ -0,0 +1,22 @@
+template<class T> class D
+{
+       public:
+               int f();
+};
+
+template<class T> int D<T>::f()
+{
+       return sizeof(T);
+}
+
+template<template<class> class D,class E> int f()
+{
+       D<E> d;
+       return d.f();
+};
+
+int main()
+{
+       f<D,int>();
+       f<D,char>();
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp25.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp25.C
new file mode 100644 (file)
index 0000000..c30905e
--- /dev/null
@@ -0,0 +1,33 @@
+template<class T> class D
+{
+       public:
+               int f();
+};
+
+template<class T> int D<T>::f()
+{
+       return sizeof(T);
+}
+
+template<template<class> class D,class E> class C
+{
+               D<E> d;
+       public:
+               int f() { return d.f(); }
+};
+
+template<template<class> class D,class E> int f(D<E> &d1)
+{
+       d1.f();
+       C<D,E> d2;
+       d2.f();
+       return 0;
+}
+
+int main()
+{
+       D<int> c1;
+       D<char> c2;
+       f(c1);
+       f(c2);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp26.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp26.C
new file mode 100644 (file)
index 0000000..6e6425e
--- /dev/null
@@ -0,0 +1,33 @@
+template<class T, class U = int> class D
+{
+       public:
+               int f();
+};
+
+template<class T, class U> int D<T,U>::f()
+{
+       return sizeof(T)+sizeof(U);
+}
+
+template<template<class> class D,class E> class C
+{
+               D<E> d;
+       public:
+               int f() { return d.f(); }
+};
+
+template<template<class> class D,class E> int f(D<E> &d1)
+{
+       d1.f();
+       C<D,E> d2;
+       d2.f();
+       return 0;
+}
+
+int main()
+{
+       D<int> c1;
+       D<char> c2;
+       f(c1);
+       f(c2);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp27.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp27.C
new file mode 100644 (file)
index 0000000..7ecf301
--- /dev/null
@@ -0,0 +1,35 @@
+template<class T> class D
+{
+       public:
+               int f() const;
+};
+
+template<class T> int D<T>::f() const
+{
+       return sizeof(T);
+}
+
+template<template<class> class D,class E> class C
+{
+               D<E> d;
+       public:
+               int f() const { return d.f(); }
+};
+
+template<template<class> class D,class E> int f(const D<E> &d1)
+{
+       d1.f();
+       C<D,E> d2;
+       d2.f();
+       return 0;
+}
+
+int main()
+{
+       D<const int> c1;
+       D<char> c2;
+       const D<char> c3(c2);
+       f(c1);
+       f(c2);
+       f(c3);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp28.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp28.C
new file mode 100644 (file)
index 0000000..5948dc5
--- /dev/null
@@ -0,0 +1,39 @@
+template<class T> class D
+{
+       public:
+               int f();
+};
+
+template<class T> int D<T>::f()
+{
+       return sizeof(T);
+}
+
+template<template<class> class D,class E> class C
+{
+               D<E> d;
+       public:
+               int f() { return d.f(); }
+};
+
+template<template<class> class D,class E> int f(D<E> &d1)
+{
+       d1.f();
+       C<D,E> d2;
+       d2.f();
+       return 0;
+}
+
+template<> int f<>(D<char> &d1)
+{
+       d1.f();
+       return 0;
+}
+
+int main()
+{
+       D<int> c1;
+       D<char> c2;
+       f(c1);
+       f(c2);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp29.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp29.C
new file mode 100644 (file)
index 0000000..b431ad0
--- /dev/null
@@ -0,0 +1,32 @@
+template<class T> class D
+{
+       public:
+               int f();
+};
+
+template<class T> int D<T>::f()
+{
+       return sizeof(T);
+}
+
+extern "C" void abort();
+
+template<template<class> class D,class E> class C
+{
+               D<E> d;
+       public:
+               int f() { abort(); return 0; }
+};
+
+template<class E> class C<D,E>
+{
+               D<E> d;
+       public:
+               int f() { return d.f(); }
+};
+
+int main()
+{
+       C<D,int> c;
+       c.f();
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp3.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp3.C
new file mode 100644 (file)
index 0000000..db22c6f
--- /dev/null
@@ -0,0 +1,14 @@
+// Build don't link:
+
+template<class E,class F> class D
+{
+};
+
+template<template<class> class D,class E> class C
+{                              // ERROR - ref below
+};
+
+int main()
+{
+       C<D,int> c;             // ERROR - param list not match
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp30.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp30.C
new file mode 100644 (file)
index 0000000..c47b157
--- /dev/null
@@ -0,0 +1,37 @@
+template<class T> class D
+{
+       public:
+               int f();
+};
+
+template<class T> int D<T>::f()
+{
+       return sizeof(T);
+}
+
+extern "C" void abort();
+
+template<template<class> class D,class E> class C
+{
+               D<E> d;
+       public:
+               int f() { abort(); return 0; }
+};
+
+template<class E> class C<D,E>
+{
+               D<E> d;
+       public:
+               int f();
+};
+
+template<class E> int C<D,E>::f()
+{
+       return d.f();
+}
+
+int main()
+{
+       C<D,int> c;
+       c.f();
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp31.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp31.C
new file mode 100644 (file)
index 0000000..4e1acf2
--- /dev/null
@@ -0,0 +1,32 @@
+template<class T> class D
+{
+       public:
+               int f();
+};
+
+template<class T> int D<T>::f()
+{
+       return sizeof(T);
+}
+
+extern "C" void abort();
+
+template<template<class> class D,class E> class C
+{
+               D<E> d;
+       public:
+               int f() { abort(); return 0; }
+};
+
+template<template <class> class F> class C<F,int>
+{
+               F<int> d;
+       public:
+               int f() { return d.f(); }
+};
+
+int main()
+{
+       C<D,int> c;
+       c.f();
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp32.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp32.C
new file mode 100644 (file)
index 0000000..5c7a63a
--- /dev/null
@@ -0,0 +1,37 @@
+template<class T> class D
+{
+       public:
+               int f();
+};
+
+template<class T> int D<T>::f()
+{
+       return sizeof(T);
+}
+
+extern "C" void abort();
+
+template<template<class> class D,class E> class C
+{
+               D<E> d;
+       public:
+               int f() { abort(); return 0; }
+};
+
+template<template <class> class F> class C<F,int>
+{
+               F<int> d;
+       public:
+               int f();
+};
+
+template<template<class>class F> int C<F,int>::f()
+{
+       return d.f();
+}
+
+int main()
+{
+       C<D,int> c;
+       c.f();
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp33.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp33.C
new file mode 100644 (file)
index 0000000..3755ff3
--- /dev/null
@@ -0,0 +1,31 @@
+template<class T> class D
+{
+       public:
+               int f();
+};
+
+template<class T> int D<T>::f()
+{
+       return sizeof(T);
+}
+
+template<template<class> class D,class E> class C
+{
+               D<E> d;
+       public:
+               template<template<class> class F> int f(F<int>);
+};
+
+template<template<class> class D,class E> 
+template<template<class> class F> int C<D,E>::f(F<int>)
+{
+       F<E> d2;
+       return d2.f();
+}
+
+int main()
+{
+       C<D,int> c;
+       D<int> d;
+       c.f(d);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp34.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp34.C
new file mode 100644 (file)
index 0000000..d605043
--- /dev/null
@@ -0,0 +1,31 @@
+template<class T> class D
+{
+       public:
+               int f();
+};
+
+template<class T> int D<T>::f()
+{
+       return sizeof(T);
+}
+
+template<template<class> class D,class E> class C
+{
+               D<E> d;
+       public:
+               int f();
+};
+
+template<template<class> class D,class E> int C<D,E>::f()
+{
+       D<E> d2;
+       return d2.f();
+}
+
+template class C<D,int>;
+
+int main()
+{
+       C<D,int> c;
+       c.f();
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp35.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp35.C
new file mode 100644 (file)
index 0000000..655f406
--- /dev/null
@@ -0,0 +1,35 @@
+template<int T, class U = int> class D
+{
+       public:
+               int f();
+};
+
+template<int T, class U> int D<T,U>::f()
+{
+       return T+sizeof(U);
+}
+
+template<template<int> class D,class E> class C
+{
+               D<1> d;
+       public:
+               int f() { return d.f(); }
+};
+
+template<template<int> class D> int f(D<2> &d1)
+{
+       d1.f();
+       return 0;
+}
+
+template<template<int> class D> int f(D<1> &d1)
+{
+       d1.f();
+       return 0;
+}
+
+int main()
+{
+       D<1> c1;
+       f(c1);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp36.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp36.C
new file mode 100644 (file)
index 0000000..976bc0e
--- /dev/null
@@ -0,0 +1,29 @@
+template<int T, class U = int> class D
+{
+       public:
+               int f();
+};
+
+template<int T, class U> int D<T,U>::f()
+{
+       return T+sizeof(U);
+}
+
+template<template<int> class D,class E> class C
+{
+               D<1> d;
+       public:
+               int f() { return d.f(); }
+};
+
+template<template<int> class D> int f(D<1> &d1)
+{
+       d1.f();
+       return 0;
+}
+
+int main()
+{
+       D<1> c1;
+       f(c1);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp37.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp37.C
new file mode 100644 (file)
index 0000000..01b0d29
--- /dev/null
@@ -0,0 +1,29 @@
+template<int T, class U = int> class D
+{
+       public:
+               int f();
+};
+
+template<int T, class U> int D<T,U>::f()
+{
+       return T+sizeof(U);
+}
+
+template<template<int> class D,class E> class C
+{
+               D<1> d;
+       public:
+               int f() { return d.f(); }
+};
+
+template<template<int> class D, int T> int f(D<T> &d1)
+{
+       d1.f();
+       return T;
+}
+
+int main()
+{
+       D<1> c1;
+       f(c1);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp38.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp38.C
new file mode 100644 (file)
index 0000000..00c663c
--- /dev/null
@@ -0,0 +1,29 @@
+template<class T, class U = int> class D
+{
+       public:
+               int f();
+};
+
+template<class T, class U> int D<T,U>::f()
+{
+       return sizeof(T)+sizeof(U);
+}
+
+template<template<class> class D,class E> class C
+{
+               D<E> d;
+       public:
+               int f() { return d.f(); }
+};
+
+template<template<class> class D> int f(D<int> &d1)
+{
+       d1.f();
+       return 0;
+}
+
+int main()
+{
+       D<int> c1;
+       f(c1);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp39.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp39.C
new file mode 100644 (file)
index 0000000..24ff6c0
--- /dev/null
@@ -0,0 +1,29 @@
+template<class T, class U = T> class D
+{
+       public:
+               int f();
+};
+
+template<class T, class U> int D<T,U>::f()
+{
+       return sizeof(T)+sizeof(U);
+}
+
+template<template<class> class D,class E> class C
+{
+               D<E> d;
+       public:
+               int f() { return d.f(); }
+};
+
+template<template<class> class D> int f(D<int> &d1)
+{
+       d1.f();
+       return 0;
+}
+
+int main()
+{
+       D<int> c1;
+       f(c1);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp4.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp4.C
new file mode 100644 (file)
index 0000000..249ad9c
--- /dev/null
@@ -0,0 +1,15 @@
+// Build don't link:
+
+template<class E> class D
+{
+};
+
+template<template<class> class D,class E> class C
+{
+       D<1> d;                 // ERROR - arg not match
+};
+
+int main()
+{
+       C<D,int> c;
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp5.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp5.C
new file mode 100644 (file)
index 0000000..4b835e8
--- /dev/null
@@ -0,0 +1,15 @@
+// Build don't link:
+
+template<int> class D
+{
+};
+
+template<template<int> class D,class E> class C
+{
+       D<int> d;                       // ERROR - arg not match
+};
+
+int main()
+{
+       C<D,int> c;
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp6.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp6.C
new file mode 100644 (file)
index 0000000..cdea182
--- /dev/null
@@ -0,0 +1,13 @@
+template<int> class F
+{
+};
+
+template<template<int> class D,class E> class C
+{
+       D<1> d;
+};
+
+int main()
+{
+       C<F,int> c;
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp7.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp7.C
new file mode 100644 (file)
index 0000000..0b98217
--- /dev/null
@@ -0,0 +1,15 @@
+// Build don't link:
+
+template<class E> class D
+{
+};
+
+template<template<class> class D,class E> class C      // ERROR - ref below
+{
+       D<int,int> d;                           // ERROR - arg not match
+};
+
+int main()
+{
+       C<D,int> c;
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp8.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp8.C
new file mode 100644 (file)
index 0000000..fd2a67c
--- /dev/null
@@ -0,0 +1,17 @@
+template<class E> class DD
+{
+};
+
+template<int> class D
+{
+};
+
+template<template<class> class D,class E> class C
+{
+       D<E>    d;
+};
+
+int main()
+{
+       C<DD,int> c;
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp9.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp9.C
new file mode 100644 (file)
index 0000000..3892b6e
--- /dev/null
@@ -0,0 +1,13 @@
+template<class E,class F=int> class D
+{
+};
+
+template<template<class> class D,class E> class C
+{
+       D<E>    d;
+};
+
+int main()
+{
+       C<D,int> c;
+}
This page took 0.105911 seconds and 5 git commands to generate.