diff options
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.pt/memclass4.C | 23 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.pt/memclass5.C | 20 |
2 files changed, 43 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memclass4.C b/gcc/testsuite/g++.old-deja/g++.pt/memclass4.C new file mode 100644 index 00000000000..de490e09a83 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memclass4.C @@ -0,0 +1,23 @@ +#include <typeinfo> + +template <class T> +struct allocator { + typedef T* pointer; + + template <class U> struct rebind { + typedef allocator<U> other; + }; +}; + +template <class T, class Allocator> +struct alloc_traits +{ + typedef typename Allocator::template rebind<T>::other allocator_type; +}; + +main () +{ + typedef alloc_traits<int, allocator<void> >::allocator_type at; + + return typeid (at) != typeid (allocator <int>); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memclass5.C b/gcc/testsuite/g++.old-deja/g++.pt/memclass5.C new file mode 100644 index 00000000000..82dbd7612ca --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/memclass5.C @@ -0,0 +1,20 @@ +template <class T> struct A { + template <class U> struct B { + template <class V> static void f () { } + void g () { } + }; +}; + +template <class T, class U> +void f () +{ + A<T>::template B<U>::template f<T> (); + typename A<T>::B<U> b; + typename A<T>::template B<U> b2; + b.A<T>::template B<U>::~B(); +} + +main () +{ + f<int, char>(); +} |