diff options
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.other/instan2.C | 15 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.other/instan3.C | 65 |
3 files changed, 85 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a77c2ef..716abf4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2000-12-02 Neil Booth <neilb@earthling.net> + * g++.old-deja/g++.other/instan2.C + * g++.old-deja/g++.other/instan3.C: New test. + +2000-12-02 Neil Booth <neilb@earthling.net> + * gcc.dg/cpp/c++98.c,c++98-pedantic.c,c89.c,c89-pedantic.c, c94.c,c94-pedantic.c,c99.c,c99-pedantic.c,gnuc89.c,gnuc89-pedantic.c, gnuc99.c,gnuc99-pedantic.c: New tests. diff --git a/gcc/testsuite/g++.old-deja/g++.other/instan2.C b/gcc/testsuite/g++.old-deja/g++.other/instan2.C new file mode 100644 index 0000000..822de9e --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.other/instan2.C @@ -0,0 +1,15 @@ +// Build don't link: +// Origin: Neil Booth, from bug report #44 + +#include <iterator> + +template<class T> +struct X +{ +}; + +template<class T> +X<T> operator+(const X<T>&, const X<T>&); + +template<> +X<int> operator+<int>(const X<int>&, const X<int>&); diff --git a/gcc/testsuite/g++.old-deja/g++.other/instan3.C b/gcc/testsuite/g++.old-deja/g++.other/instan3.C new file mode 100644 index 0000000..ae53224 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.other/instan3.C @@ -0,0 +1,65 @@ +// Build don't link: +// Origin: Neil Booth, from bug report #36 + +template <typename t> class vect; +template <typename t> vect<t> operator-( const vect<t>&, const vect<t>& ); + +template <typename t> +class vect +{ +public: + vect( t a ); + + vect( const vect<t>& v ); + ~vect(); + + vect<t>& operator=( const vect<t>& v ); + vect<t> operator-( void ) const; + friend vect<t> operator- <>( const vect<t>&, const vect<t>& ); + +private: + t a_; +}; + +template <typename t> inline +vect<t>::vect( t a ) +: a_(a) +{ +} + +template <typename t> inline +vect<t>::vect( const vect<t>& v ) +: a_(v.a_) +{ +} + +template <typename t> inline +vect<t>::~vect() +{ +} + +template <typename t> inline vect<t>& +vect<t>::operator=( const vect<t>& v ) +{ + a_ = v.a_; + return *this; +} + +template <typename t> inline vect<t> +vect<t>::operator-( void ) const +{ + return vect<t>( -a_ ); +} + +template <typename t> inline vect<t> +operator-( const vect<t>& u, const vect<t>& v ) +{ + return vect<t>( u.a_ - v.a_ ); +} + +int +main( void ) +{ + vect<double> a( 1.0 ), b( 0.0 ); + b = -a; +} |