OSDN Git Service

* g++.old-deja/g++.other/instan2.C
authorneil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 2 Dec 2000 15:28:08 +0000 (15:28 +0000)
committerneil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 2 Dec 2000 15:28:08 +0000 (15:28 +0000)
        * g++.old-deja/g++.other/instan3.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37952 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/g++.old-deja/g++.other/instan2.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.other/instan3.C [new file with mode: 0644]

index a77c2ef..716abf4 100644 (file)
@@ -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 (file)
index 0000000..822de9e
--- /dev/null
@@ -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 (file)
index 0000000..ae53224
--- /dev/null
@@ -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;
+}