diff options
author | Jason Merrill <jason@gcc.gnu.org> | 1998-01-22 06:04:02 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 1998-01-22 06:04:02 -0500 |
commit | ff7620c005436d4d35b6a536ae27456725c28c88 (patch) | |
tree | 2f1cb0bb228800cc49452fe83f1f3ce42452422a | |
parent | 73b0fce8fd7d5b9e166a6f283cf73215f9873473 (diff) | |
download | gcc-ff7620c005436d4d35b6a536ae27456725c28c88.zip gcc-ff7620c005436d4d35b6a536ae27456725c28c88.tar.gz gcc-ff7620c005436d4d35b6a536ae27456725c28c88.tar.bz2 |
new
From-SVN: r17442
39 files changed, 1053 insertions, 0 deletions
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 index 0000000..4c6bac0 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp1.C @@ -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 index 0000000..ca0c9b6 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp10.C @@ -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 index 0000000..213eb40 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp11.C @@ -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 index 0000000..c9bc9f3 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp12.C @@ -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 index 0000000..2745c7a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp13.C @@ -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 index 0000000..3b284ae --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp14.C @@ -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 index 0000000..25f3c4d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp15.C @@ -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 index 0000000..ac736fa --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp16.C @@ -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 index 0000000..6852404 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp17.C @@ -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 index 0000000..6c9e579 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp18.C @@ -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 index 0000000..8a24946 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp19.C @@ -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 index 0000000..5badbe2 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp2.C @@ -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 index 0000000..e3b26c6 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp20.C @@ -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 index 0000000..c6cc24b --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp21.C @@ -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 index 0000000..7eac0ed --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp22.C @@ -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 index 0000000..636bb1c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp23.C @@ -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 index 0000000..1e6278f --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp24.C @@ -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 index 0000000..c30905e --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp25.C @@ -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 index 0000000..6e6425e --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp26.C @@ -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 index 0000000..7ecf301 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp27.C @@ -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 index 0000000..5948dc5 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp28.C @@ -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 index 0000000..b431ad0 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp29.C @@ -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 index 0000000..db22c6f --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp3.C @@ -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 index 0000000..c47b157 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp30.C @@ -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 index 0000000..4e1acf2 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp31.C @@ -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 index 0000000..5c7a63a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp32.C @@ -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 index 0000000..3755ff3 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp33.C @@ -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 index 0000000..d605043 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp34.C @@ -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 index 0000000..655f406 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp35.C @@ -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 index 0000000..976bc0e --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp36.C @@ -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 index 0000000..01b0d29 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp37.C @@ -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 index 0000000..00c663c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp38.C @@ -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 index 0000000..24ff6c0 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp39.C @@ -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 index 0000000..249ad9c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp4.C @@ -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 index 0000000..4b835e8 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp5.C @@ -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 index 0000000..cdea182 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp6.C @@ -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 index 0000000..0b98217 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp7.C @@ -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 index 0000000..fd2a67c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp8.C @@ -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 index 0000000..3892b6e --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp9.C @@ -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; +} |